express生成器&MongoDB&fetch&mvc&bcrypt

查看全局安装的包 npm list -g --depth=0

npx 临时安装一个包,用完之后就自动删除

xx中间件 所有xx运行到某个位置都会经过中间件的处理

非关系型数据库用mongoose库,关系型数据库用sequelize库

大写表示对象,小写表示实例,可以new的东西都尽量大写开头

ejs部分的代码中注释了也会运行

caniuse.com 查询兼容性的网址

错误码汇总(非状态码)

http://www.tietuku.com/doc

这两句用来处理请求参数

  • app.use(express.json());
  • app.use(express.urlencoded({ extended: false }));

使用ajax登录无法在后台进行跳转ajax请求跳转在前端处理,form表单跳转在后端处理
通常用后端的session来设置cookie,session保存在服务器端,cookie保存在客户端,cookie的值经过加密,服务端才能拿到真实的值

express-generator

npm(x) express-generator 目录名 -e 在指定目录下创建一个express应用,并使用ejs模板引擎,自带路由
创建之后使用npm i安装express应用依赖

app.use是express中调用中间件的方法,其中app是express的实例
使用了这两句可以通过req.body得到请求中的参数
app.use(express.json())
app.use(express.urlencoded({ extended: false}))

express生成器指南

http://www.expressjs.com.cn/starter/generator.html

cookie-parse express的cookie处理中间件

路由

通配符路由 定义路由时加上:id,则原本路径后面无论加什么都可以访问

运行步骤 新建路由->引入路由->浏览器打开
api的本质就是路由
开发中为后台和前台交互的页面

module.exports = router 导出模块
ES6写法

mongodb

关系型数据库 结构性存储 mysql MariaDB
在nodejs中用sequelize包来连接
非关系型数据库 文档型存储(json格式) MongoDB
在nodejs中用mongoose包来连接

mongod 启动数据库

show dbs 查看数据库
use 创建或切换数据库 数据库中没有内容时不会显示
db.数据库名

db.dropDatabase() 删除数据库

mongoose

关系型数据库 结构性存储 mysql MariaDB
在nodejs中用sequelize包来连接
非关系型数据库 文档型存储(json格式) MongoDB
在nodejs中用mongoose包来连接

nodejs可以连接mongodb的一个库
npm install mongoose -S 安装mongoose
Schema 定义数据库文档的数据结构

用mongoose连接MongoDB
mongoose.connect(数据库地址和库名,{userNewUrlParser:true})
module.exports = new model()

model的find基于promise,自己就有回调函数then
在数据库中查找
find从后台返回的数据是一个数组

bcrypt加密

bcrypt包 nodejs中用来加密密码
npm i bcrypt -S

加密

bcrypt.genSalt(saltRounds,(err,salt)=>{
bcrypt.hash(password, salt, (err, password)=>{
//这里的password为加盐加密后的密码字符串
})
})

解密

bcrypt.compare(password,resp.password,(req,result)=>{
// password是req.body中用户输入的的,resp.password是从数据库中取出的密码
})

mvc架构

View层是界面,Controller层是业务逻辑,Model层是数据库访问

目的:MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强

View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。

fetch方法(同AJAX)

js原生方法,用于访问和操作http请求和响应,会返回包含响应结果的promise

fetch(‘路由地址’[,发送数据(json)])

fetch('/api/v1/signin', {
    //body为要发送的数据
    body: JSON.stringify(data), 
    method: 'POST', 
})
.then(response => response.json()) //fetch的响应不是直接JSON,需要先调一下.json方法,在下一个then里去找到json
.then(resp => 处理返回的resp
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值