在写这边文章的前面我们来看段代码:
app.use((req, res, next) => {
/*
*
* ... 中间件代码
*
*/
next()
})
上面,这段是一个典型的express中间代码,那为什么需要中间件?中间件是什么?node社区上有一张很典型的express或者koa的洋葱模型:

我们可以这样理解,当用户请求也就是request在浏览器端像node发起会经过像洋葱一样的一层处理,这种处理我们会包含很多东西,比如路由匹配、错误、缓存、鉴权等处理,然后在response给浏览器端。这种处理机制,被称为中间件,做成中间件的好处我们可以有一个统一的钩子处理一层一层的数据,就像java中的拦截器。
那么,上面的中间件,有几个关键的东西,其中,use是把中间件函数绑定到app对象中去,当用户发起request的时候,就会往里面传入三个参数:req、res、next,req、res就不用说了,字面意思很明显了,而next就是一个钩子,当执行完中间件代码达到目的之后由next触发下一层洋葱皮。
参考资料:
http://www.expressjs.com.cn/guide/using-middleware.html