【eggjs】路由去中心化插件【egg-direct】
发布于 7 年前 作者 lisniuse 4097 次浏览 来自 分享

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说明

2 回复

我用的方法是动态加载,按特定的url结构,指定class和方法,不需要写路由

@pzzcn 有的时候你的一个方法需要响应多个http请求方法(get、post),还有可能接收多个路由规则;比如:foo 或者 /foo/bar 都指向同一个控制器的方法这种需求。

回到顶部

AltStyle によって変換されたページ (->オリジナル) /