【问题标题】:Express.js - Single routes file that manages all the routesExpress.js - 管理所有路由的单个路由文件
【发布时间】:2014-10-09 07:51:54
【问题描述】:

我对 express.js 有点陌生,但还没有找到与我的问题匹配的答案。

我有一个文件夹结构如下的 express 应用:

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 中的路线?

非常感谢您的帮助!

【问题讨论】:

    标签: javascript node.js express routes


    【解决方案1】:

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

    [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);
    }
    

    【讨论】:

    • 到目前为止工作正常。但是如果我想引用另一个路由文件,如果用户请求例如“/用户”?
    • @RicoHerwig 你只需要像我一样将app 变量传递给那个文件,你会没事的
    • 看来,我对此很愚蠢: app.get('/users', require('./users')(app));不工作
    • 不应该 :) 我没有正确理解你的问题,我会完成我的回答
    • 就是这样!非常感谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2019-09-03
    • 2017-09-02
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多