eggjs中间件+定时任务
中间件
-
所处环节
- 用户 -> 中间件 -> 路由 -> 控制器 -> 服务
-
app目录内
- 新建
middleware中间件文件夹 - 打开后,在里面新建
check.js,添加内容为:module.exports = options => { return async function check(ctx,next){ console.log("检查"); //记得要让中间件顺利通过,进入路由处理 await next(); } } //参数options会传递变量app.config[${middlewareName}]
- 新建
-
注册中间件 的 两种办法
-
【应用层注册】
- 打开
config/config.default.js - 添加内容为:
config.middleware = ['check'] - 会挂载到 app.config.appMiddleware
- 框架默认的挂载在 app.config.coreMiddleware
- 二者会合并到 app.middleware
- 打开
-
【单个路由注册】
- 打开
app/router.js - 添加内容为:
const check = app.middleware.check() router.get("内部使用的别名可省略","要匹配的路径",check,"控制器方法路径") - 可以连续写多个,逗号隔开,按书写顺序一一经过中间件,注意名字不能与默认中间件同名
- 打开
-
-
可引入Koa的中间件
定时任务
-
app目录内
- 新建schedule定时任务文件夹,
- 打开后,在里面新建
wantdo.js,添加内容为:module.exports = { schedule:{ interval: 2000, //单位毫秒 type: 'all' //所有worker都要执行 }, async task(ctx){ console.log('定时任务执行') } }- 一个文件只能定义一个task,执行一个任务
-
执行日志会输出到
${appInfo.root}/logs/{app_name}/egg-schedule.log- 默认不会输出到控制台
-
可以手动执行
app.runSchedule("定时任务文件名")