koa中间件

什么叫中间件

在Koa中,中间件是指连贯整个 Koa 应用程序,并共享资源(上下文)的独立插件。
这里注意两个词:连贯共享资源

  • 连贯 对应“next”
  • 共享资源 对应"context”。
中间件(middlewares)

如图,是一个基本的web服务器的模型,服务器接受一个浏览器的request请求,然后返回一个response,一个个小箭头指的就是中间件。为什么要画成洋葱这么一个形态,是因为不管是接收请求还是返回结果,都要经过中间件,所以中间件是一个环形的,只不过,进去和出来的过程经过的中间件顺序是相反的。

中间件的执行顺序

如图,我们自定义三个中间件,每个中间件都在进入和离开的时候输出一串代码。


image.png

其中每个中间件的代码如下:

function m1(ctx,next){
    // console.log('m1',ctx.path);
}

module.exports = function(){
    return async function(ctx,next){
        console.log('m1 start')
        m1(ctx)
        await next();
        console.log('m1 end')
    }
}

m1,m2,m3中间件的主要区别在于console.log(m2 start),console.log('m2 end')
我们按照如下顺序在app.js引入并使用3个中间件:

image.png

刷新页面,我们可以在命令行中看到如下输出:
image.png

可以看出,中间件的执行顺序是标准的堆栈(先进后出)模型。

中间件的执行顺序和中间件的引用顺序没有关系,和app.use()的顺序有关

推荐阅读更多精彩内容