函数的使用
托管静态资源路径:
App.use(express.static(‘文件路径’))
可以挂载路径前缀App.use(‘ ’,express.static(‘文件路径’))
Express路由:
模块化路由
Express不建议将路由直接挂载到app上,而实推荐将路由抽离未单独的模块
Express.Router()创建路由对象
Modules.export()
App.use函数的作用,就是用来注册全局中间件
中间件,对请求进行预处理
其中包含next形参,进行next函数嗲用
是实现多个中间件连续调用的关键
全局生效的中间件
//Const mw=function(req,res.next){
Next() }
App.use(mw)
局部生效中检件
App.get(‘/’,mw1,function(){
})// 不适用app.use生效的中间价
五个注意事项
- 一定要在路由之前注册中间件
- 客户端发送过来的请求,可以连续调用多个中间件进行处理
- 执行完中间件的业务代码忠厚,不要忘记调用next函数
- 为了防止代码逻辑混乱,调用next()函数后不要再写额外的代码
- 连续调用多个中间件时,多个中间件之间,共享req和res对象
中间件的分类
应用级别中间件,绑定到app实例上的中间件,分别有:局部和全局
路由级别中间件,绑定到router实例上
错误级别的中间件(必须注册在所有路由之后)
Function(err,req,res.next){}
可通过throw new Error进行错误的抛出
Express内置的中间件
Express.static()
Express.json()
Express.urlencoded({extend:false})
Body-parser 用于解析请求体
自定义中间件
- 定义中间件
- 监听req的data实件
- 监听req的end事件
- 使用querystring模块解析请求体数据
- 将解析出来的数据对象挂载为req.body
- 将自定义中间件封装为模块