Koajs中间件之定义(一)
Koajs中间件之定义(一)
Koajs中间件之next(二)
Koajs中间件之context(三)
Koa 作为一个简单、易学、好用的的 Web 框架,只有区区几百行代码,被人津津乐道的就是其精妙的设计了。一直都在项目中使用Koajs,但其实很少认真的看过其中的源码,中间件作为 Koa 框架的精髓,如果明白了其中的原理基本上对 Koa 有了一半的了解。
什么是 Koa 中间件
Koa 官方并未对中间件有一个具体的定义,尝试给个定义:“在Koa中,中间件是指连贯整个 Koa 应用程序,并共享资源(上下文)的独立插件。”
示例简析
const Koa = require('koa'); const app = new Koa(); const middleware1 = (context, next) => { console.log('middleware1 >>>>>'); next(); console.log('middleware1 <<<<<'); } const middleware2 = (context, next) => { console.log('middleware2 >>>>>'); next(); console.log('middleware2 <<<<<'); } const middleware3 = (context, next) => { console.log('middleware3 >>>>>'); next(); console.log('middleware3 <<<<<'); } app.use(middleware1); app.use(middleware2); app.use(middleware3); app.listen(3000);
输出结果
middleware1 >>>>> middleware2 >>>>> middleware3 >>>>> middleware3 <<<<< middleware2 <<<<< middleware1 <<<<<
标准的堆栈(先进后出)模型,Koa 官方称为洋葱模型,也有人称为回形针模型,可以用下面的图来形容
next、context
上面定义中我们讲过,“在Koa中,中间件是指连贯整个 Koa 应用程序,并共享资源的独立插件”,注意两个词,“连贯”与“共享资源”,与上面的代码一一对应,“连贯”对应“next”,“共享资源对应context”。