egg-router-plus
The missing router features for eggjs
Install
$ npm i egg-router-plus --save
Then mount plugin:
// {app_root}/config/plugin.js
exports.routerPlus = {
enable: true,
package: 'egg-router-plus',
};
Features
app/router/**/*.js
load this plugin will auto load router define at app/router/**/*.js
.
Notice: all sub routers will be loaded before app/router.js
, please ensure all the sub router definitions are not conflict(better to use app.router.namespace
to create different namespaces for each sub router file).
app.router.namespace
app.router.namespace(prefix, ...middlewares);
prefix
- {String}, the prefix string of sub routermiddlewares
- {...Function}, optional group middlewares
Support same as Router:
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);
Note: prefix
and path
are not allow to be regex
.
// {app_root}/app/router.js
module.exports = app => {
const subRouter = app.router.namespace('/sub');
// curl localhost:7001/sub/test
subRouter.get('/test', app.controller.sub.test);
subRouter.get('sub_upload', '/upload', app.controller.sub.upload);
// const subRouter = app.router.namespace('/sub/:id');
// cont subRouter = app.router.namespace('/sub', app.middleware.jsonp());
// output: /sub/upload
console.log(app.url('sub_upload'));
};
Known issues
- sub
redirect
is not support, useapp.router.redirect()
or redirect to a named router.
const subRouter = app.router.namespace('/sub');
// will redirect `/sub/go` to `/anyway`, not `/sub/anyway`
subRouter.redirect('/go', '/anyway');
// just use router
router.redirect('/sub/go', '/sub/anyway');
// or redirect to a named router
subRouter.get('name_router', '/anyway', app.controller.sub.anyway);
// will redirect `/sub/go_name` to `/sub/anyway` which is named `name_router`
subRouter.redirect('/sub/go_name', 'name_router');
Questions & Suggestions
Please open an issue here.