Express.js - 管理所有路由的单个路由文件

时间:2014-08-15 14:56:45

标签: javascript node.js express routes

我是express.js的新手,但我找不到匹配的答案。

我有一个像这样的文件夹结构的快速应用程序:

app/
|--app.js
|--routes/
|--|--index.js
|--|--news.js
|--|--users.js 
|--some_other_folders/

至于现在,我已经在app.js中管理了我的路线,如下所示:

var index = require('./routes/index');
var users = require('./routes/users');
...
app.use('/', index);
app.use('/users', users);
...

这很好用,但我原本只想用一个文件管理所有路由,所以我只需要在app.js中引用这个文件。

这样的事情:

[app.js]
var routes = require('./routes/routes');
app.use('/', routes);


[routes/routes.js]
...
router.get('/', function(req, res) {
  res.render('index.html');
});

require('./users'); // This is meant to refer to the users routes
...

有没有办法将我的其他路径文件(如用户,新闻,...)包含在“主”路由文件中?

或者是否可能有其他最佳做法来管理express.js中的路线?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:4)

是的,有很好的方法可以做到这一点

[app.js]
var routes = require('./routes/routes')(app);

[routes/routes.js]
var user = require('./user'); // get user controllers

module.exports = function(app) {
    app.get('/', function() { ... });
    app.get('/another-path', function() { ... });

    app.get('/user/:id', user.display);
    app.post('/user/:id', user.update);
};
[routes/user.js]
module.exports.display = function(req, res) {
    ...
    res.render('user', data);
}
module.exports.update = function(req, res) {
    ...
    res.render('user', data);
}