【问题标题】:Express - Route separation methodsExpress - 路线分隔方法
【发布时间】:2015-06-30 00:44:13
【问题描述】:

我正在尝试找到在 Express 中分隔路线的最佳方法。我知道两种方法,我想知道它们之间有什么区别,哪一种被认为是“最佳实践”(以及为什么)。

方法一 - 出口

很多例子似乎都使用这种方法

app.js

var user = require('./routes/users');
app.get('/users', user.list);

路由/users.js

exports.list = function(req, res){
  res.render('users', { title: 'Users', users: users });
};

方法二 -

快递指南中使用此方法

app.js

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

路由/users.js

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

router.get('/', function(req, res){
  res.render('users', { title: 'Users', users: users });
});

module.exports = router;

正如我上面所说,哪一种是首选方法,为什么?

【问题讨论】:

    标签: javascript node.js express routes


    【解决方案1】:

    方法三 - 同时使用

    您应该利用 Express 4 中引入的路由器和控制器的模块化。

    app.js

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

    routes/index.js

    var express = require('express');
    var users = require('../routes/users');
    var router = express.Router();
    
    router.use('/users', users);
    
    module.exports = router;
    

    routes/users.js

    var express = require('express');
    var users = require('../controllers/users');
    var router = express.Router();
    
    router.get('/', users.list);
    
    module.exports = router;
    

    controllers/users.js

    exports.list = function(req, res){
      res.render('users', { title: 'Users', users: users });
    };
    

    【讨论】:

    • 感谢您的回答,此方法是否存在相关的性能问题?
    • @AshleyB 它不应该有,因为app.get 等无论如何都在内部使用路由器。
    • 谢谢,我只是好奇,因为请求流看起来像这样:app.js -> router/index.js -> router/users.js -> controllers/users.js - > views/users/user.hjs 它只是看起来不是最有效的做事方式。但我会先给它,干杯!
    • 不要忘记模块是缓存的,所以它不会影响运行时的 I/O 性能。
    • 这正是我所需要的。非常有帮助!谢谢。
    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多