在ExpressJS中合并来自多个文件的路由?

Fre*_*key 3 node.js express

合并来自两个文件的路由以使Express Router可以在同一级别处理它们的最佳方法是什么?我在想这样的事情:

默认路由文件
每次生成器运行时,都会生成并覆盖此文件:

var express     = require('express'),
    router      = express.Router(),
    custom      = require('./custom.routes');

router.get('/', function (req, res) {
});
router.post('/', function (req, res) {
});
router.put('/', function (req, res) {
});

router.use('/', custom);

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

自定义路由文件
此文件只会在第一次生成,并且永远不会被覆盖。

var express = require('express'),
    router  = express.Router();

router.post('/custom-method', function (req, res) {

});

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

父路由文件
此文件不断生成并覆盖。它负责提供顶层api路线:

var express = require('express'),
    apiRouter  = express.Router();

var widgetRouter = require('./widget.routes');
apiRouter.use('/widgets', widgetRouter);

var sprocketRouter = require('./sprocket.routes');
apiRouter.use('/sprockets', sprocketRouter);

module.exports = apiRouter;
Run Code Online (Sandbox Code Playgroud)

显而易见的目标是允许开发人员自定义路线,并知道即使再次运行发电机,他的工作也将是安全的。

aho*_*off 6

router.use()不一定需要把您带到树的更深处。您可以在导出第一个文件之前添加以下行。

router.use('/', require('./routes.custom.js'));
Run Code Online (Sandbox Code Playgroud)

这样,您还可以从自定义文件中删除包装器。