【eggjs】路由去中心化插件【egg-direct】
github:https://github.com/lisniuse/egg-direct 昨天在写eggjs的时候发现路由太多了管理很不方便,晚上研究了一下egg-core,写出了这个eggjs 路由去中心化插件。 不需要ts的装饰器,思路比较奇特,直接在方法参数中进行配置并且支持子控制器、多层级控制器,不与默认路由配置文件冲突。
依赖的插件
- egg-core(一般不需要单独安装)
开启插件
// config/plugin.js
exports.direct = {
enable: true,
package: 'egg-direct',
};
使用场景
使用egg-direct插件,可以不需要装饰器也可以在控制器中定义路由配置。
在定义的方法的默认参数配置里定义一个router变量,例如:
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index(router = [
[ 'get', '/' ],
[ 'get', '/home' ],
]) {
this.ctx.body = 'hi, ' + this.app.plugins.direct.name;
}
}
module.exports = HomeController;
router 参数接收一个二维数组类型的值,子数组的第一个是router的方法名,对应调用router[method](..argv),后面的值表示调用参数(...argv),具体传入参数,可以查看官方文档router说明。