Express的中间件
Express的中间件,本质上就是一个function处理函数,多个中间件作用相当于多道处理过程。
区别在于中间件的回调函数参数中还包括next
而路由处理函数中只包括req,res
格式:
var express=require("express");
var app=express();
app.get('/',function(req,res,next){
next();
})
next
next函数的作用是连接多个中间件。
转交给下一个中间件或路由处理。
全局生效的中间件
const mw=function(req,res,next){
console.log("全局生效的中间件");
//若没有下一个中间件,则转交给下一个路由处理
next()
}
//注册全局生效的中间件
app.use(mw)
app.get('/',function(req,res){
console.log("访问根目录");
})
局部生效的中间件
const mw=function(req,res,next){
console.log("'/'路由 局部生效的中间件");
//若没有下一个中间件,则转交给下一个路由处理
next()
}
//表示只在当前路由 即'/' 生效这个中间件
app.get('/',mw,function(req,res){
console.log("访问根目录");
})
多个中间件调用
app.get('/',mw1,mw2,function(req,res){
console.log("访问根目录");
})
等价于
app.get('/',[mw1,mw2],function(req,res){
console.log("访问根目录");
}
)
注意、
- 一定要在路由前注册中间件。
- 不要忘记next()函数
- 为了逻辑清晰,next()后最好不添加额外代码