中间件格式
module.exports = options => {
return (ctx, next) => {
// do something
}
}
中间件格式为一个高阶函数,外部的函数接收一个 options
参数,这样方便中间件提供一些配置信息,用来开启/关闭一些功能。执行后返回另一个函数,这个函数接收 ctx
, next
参数,其中 ctx
为 context
的简写,是当前请求生命周期的一个对象,存储了当前请求的一些相关信息,next
为调用后续的中间件,返回值是 Promise,这样可以很方便的处理后置逻辑。
整个中间件执行过程是个洋葱模型,类似下面这张图: