egg.js中间件

中间件

Egg 是基于 Koa 实现的,所以 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型。每次我们编写一个中间件,就相当于在洋葱外面包了一层。
洋葱圈模型:
egg.js中间件_第1张图片
以下图为例;

egg.js中间件_第2张图片该图的执行顺序为:1、var start = new Data 2、yield next 3、var start = new Data 4、yield next 5、var used =new Date- start; 6、console.log 7、var ms=new Date- start;
由此可见,所有的请求经过一个中间件的时候都会执行两次;

通用配置

  • enable:控制中间件是否开启。
  • match:设置只有符合某些规则的请求才会经过这个中间件。
  • ignore:设置符合某些规则的请求不经过这个中间件。

中间件使用:

1. 在应用中使用中间件:
在应用中,我们可以完全通过配置来加载自定义的中间件,并决定它们的顺序。
“gzip为一个中间件”

egg.js中间件_第3张图片
2.在框架和插件中使用中间件
egg.js中间件_第4张图片
应用层定义的中间件(app.config.appMiddleware)和框架默认中间件(app.config.coreMiddleware)都会被加载器加载,并挂载到 app.middleware 上。

3. router 中使用中间件
如果你只想针对单个路由生效,可以直接在 app/router.js 中实例化和挂载,如下:
egg.js中间件_第5张图片

你可能感兴趣的:(node.js)