【问题标题】:What is the difference between "express.Router" and routing using "app.get"?“express.Router”和使用“app.get”的路由有什么区别?
【发布时间】:2014-06-29 16:46:44
【问题描述】:

我有一个带有以下路由代码的应用:

var router = express.Router(); 
router.post('/routepath', function(req, res) {});

现在我必须将路由代码放在不同的文件中,所以我尝试使用 this 方法,但它不工作可能是因为它使用的是 express.Router() 而不是:

app.post("/routepath", function (req, res) {});

如何使用express.Router() 将路由放在不同的文件中?

为什么app.get、app.post、app.delete等在使用express.Router()后无法在app.js中工作?

【问题讨论】:

标签: node.js express routes


【解决方案1】:

这是一个简单的例子:

// myroutes.js
var router = require('express').Router();

router.get('/', function(req, res) {
    res.send('Hello from the custom router!');
});

module.exports = router;

// main.js
var app = require('express')();

app.use('/routepath', require('./myroutes'));

app.get('/', function(req, res) {
    res.send('Hello from the root path!');
});

这里,app.use() 正在将Router 实例安装在/routepath,因此添加到Router 实例的任何路由都将相对于/routepath。

【讨论】:

  • 非常适合 res.send 感谢,但在 main.js 中声明的函数对于 myroutes.js 中的路由无法访问
  • 如果您有这样的共享代码,那么将该代码放在一个单独的文件/模块中(例如 common.js),然后在 main.js 和 myroutes.js(以及任何地方)中简单地 require() 它们否则)。
  • Express 4.0 没有app.router
  • @RavishankarRajendran require('express').Router() != app.router
  • @RavishankarRajendran app.router 与 require('express').Router 无关(这是 Express 4 的事情)。它们是分开的东西。安装单独的路由器可以让您更好地组织您的路线。我的回答中显示了一个简单的例子。
猜你喜欢
  • 2015-04-03
  • 2019-06-27
  • 2015-01-25
  • 2015-09-15
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
相关资源
最近更新 更多