egg-router-plus(路由分组)
# 安装
npm i egg-router-plus --save
1
app_root}/config/plugin.js
:
exports.routerPlus = {
enable: true,
package: 'egg-router-plus',
};
1
2
3
4
2
3
4
# 使用
此插件将自动加载在app/router/**/*.js
中定义的路由器。
注意:所有子路由器将在app/router.js
之前加载,请确保所有子路由器定义不冲突(最好使用app.router.namespace
为每个子路由器文件创建不同的名称空间)。
app.router.namespace(prefix, ...middlewares)
1
prefix
- {String}:子路由器的前缀字符串middlewares
- {...Function}:可选中间件
注意:prefix
和 path
不能是正则表达式,prefix
不能是 /
。
使用方法与原本相同:
- router.verb('path-match', app.controller.action);
- router.verb('path-match', middleware1, ..., middlewareN, app.controller.action);
- router.verb('router-name', 'path-match', app.controller.action);
- router.verb('router-name', 'path-match', middleware1, ..., middlewareN, app.controller.action);
{app_root}/app/router.js
:
module.exports = app => {
const subRouter = app.router.namespace('/sub');
// const subRouter = app.router.namespace('/sub/:id');
// const subRouter = app.router.namespace('/sub', app.middleware.jsonp());
// 访问地址 localhost:7001/sub/test
subRouter.get('/test', app.controller.sub.test);
subRouter.get('sub_upload', '/upload', app.controller.sub.upload);
// 输出: /sub/upload
console.log(app.url('sub_upload'));
};
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 注意
不支持子路由重定向,请使用app.router.redirect()
或重定向到指定名称的路由器。
const subRouter = app.router.namespace('/sub');
// 这个将`/sub/go`重定向到`/anyway`, 而不是`/sub/anyway`
subRouter.redirect('/go', '/anyway');
// 必须使用全局路由
router.redirect('/sub/go', '/sub/anyway');
// 或者将重定向的路由设置路由名称
subRouter.get('name_router', '/anyway', app.controller.sub.anyway);
// 这将重定向 `/sub/go_name` 到 `/sub/anyway` 使用了其路由名称 `name_router`
subRouter.redirect('/sub/go_name', 'name_router');
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2023/09/22, 16:54:32