6、Egg.js 中间件

251 阅读1分钟

Egg.js约定中间件要写在/app/middleware文件夹下面,如果没有middleware可以自己建立。在文件夹下,新建一个counter.js的文件。简单做一个访问页面的次数这样的计数器,把这个计数器的值保存在Session当中。

中间件的编写

'use strict';

module.exports = options => {
  return async (ctx, next) => {
    if (ctx.session.controller) {
      ctx.session.controller++;
    } else {
      ctx.session.controller = 1;
    }
    await next();
  };
};

还需要手动的挂载中间件。挂载方法是打开/config/config.default.js文件。

  config.middleware = [ 'counter' ];

这样配置之后,就是全局的中间件,无论访问那个页面,计数器都会增加。

router中间件的编写

如果只想让访问/gettest时,计数器才会增加,这时候就要使用在router(路由)中配置中间件的使用。直接在\app\router.js 中实例化和挂载。

我们先去掉全局的挂载,然后到router.js文件中挂载单个路由。

/config/config.default.js文件

config.middleware = [];

router.js文件添加

const counter = app.middleware.counter();
//router.get('/gettest', controller.home.gettest); //原来写法
router.get('/gettest', counter, controller.home.gettest);//添加中间件写法

这时候在访问127.0.0.1:7001,计数器虽然会显示,但是不会增加。访问127.0.0.1:7001/gettest路径的时候才会继续增加。也就是说中间件才会起作用。在实际开发中中间件还是有很多用处的,比如日志的记录、比如所有页面的Gzip压缩展示、比如全局埋点的使用。

学习日期:2021/12/24

视频参考www.bilibili.com/video/BV1s3…

文档参考jspang.com/detailed?id…

仅供个人学习和记录