结论:其实就是当有请求时,会先处理中间件,等到各种中间件处理完毕,最后才进入路由的方法体。
我们可以使用use来注册中间件,然后中间件里使用next()来帮助我们执行完该中间件后执行下一个中间件,如果没有使用next(),那么请求将会被挂起,并且后边的中间件得不到被执行的机会.
注意:中间件的注册需要放在route handle的前面
var app = express()
app.use(function(req,res,next){
console.log(req,res)
next()
})
app.get('/',function(req,res,next){
conole.log("hello world")
})
为什么中间件里要使用next()来帮助我们进行执行下一个中间件呢?为什么不直接像普通函数那样直接调用,一个完成接下一个?
那是因为其实middlewares里可能会有执行异步的操作,所以并非是到达函数底部就代表middlewares执行的完成。由于express并不知道middlewares什么时候完成,所以必须要等到next()函数被显性呼叫后,才会进入下一个middlewares处理
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。