“express.Router”和使用“app.get”的路由有啥区别?
Posted
技术标签:
【中文标题】“express.Router”和使用“app.get”的路由有啥区别?【英文标题】: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
中工作?
【问题讨论】:
问***.com/questions/28305120/… 【参考方案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 的事情)。它们是分开的东西。安装单独的路由器可以让您更好地组织您的路线。我的回答中显示了一个简单的例子。以上是关于“express.Router”和使用“app.get”的路由有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Nodejs Express 4.X 中文API 4--- Router篇
使用 express.router() 使用 api 密钥向第三方 API 发出获取请求;
× React - fetch('/') 不会命中 Express.router 中的索引路由