“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.getapp.postapp.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.routerrequire('express').Router 无关(这是 Express 4 的事情)。它们是分开的东西。安装单独的路由器可以让您更好地组织您的路线。我的回答中显示了一个简单的例子。

以上是关于“express.Router”和使用“app.get”的路由有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

node服务端开发中express路由和http路由总结

Nodejs Express 4.X 中文API 4--- Router篇

使用 express.router() 使用 api 密钥向第三方 API 发出获取请求;

× React - fetch('/') 不会命中 Express.router 中的索引路由

使用mongoose删除Express Router对ES8语法不起作用

ExpressJs server中Router的设置