node.js - express.Router 和 app.get 的区别?

标签 node.js express

我从 NodeJS 和 Express 4 开始,我有点困惑。我一直在阅读 Express 网站,但看不到 when 使用路由处理程序或何时使用 express.Router

如我所见,如果我想在用户点击 /show 时显示页面或其他内容,例如,我应该使用:

var express = require('express')    
var app = express()    
app.get("/show", someFunction)  

一开始,我认为这是旧的(对于 Express 3)。是这样吗,还是 Express 4 也是这样?

如果这是 Express 4 中的方法,那么 express.Router 是做什么用的?

我阅读了与上面几乎相同的示例,但使用的是 express.Router:

var express = require('express');
var router = express.Router();
router.get("/show", someFunction)

那么,这两个例子有什么区别呢?

如果我只想做一个简单的测试网站,我应该使用哪一个?

最佳答案

app.js

var express = require('express'),
    dogs    = require('./routes/dogs'),
    cats    = require('./routes/cats'),
    birds   = require('./routes/birds');

var app = express();

app.use('/dogs',  dogs);
app.use('/cats',  cats);
app.use('/birds', birds);

app.listen(3000);

dogs.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('GET handler for /dogs route.');
});

router.post('/', function(req, res) {
    res.send('POST handler for /dogs route.');
});

module.exports = router;

当调用var app = express() 时,会返回一个app 对象。将其视为主应用

当调用var router = express.Router() 时,会返回一个略有不同的mini appmini app 背后的理念是,您的应用程序中的每条路线都可能变得相当复杂,您可以从将所有这些代码移到一个单独的文件中受益。每个文件的路由器都变成了一个迷你应用,其结构与主应用非常相似。

在上面的示例中,/dogs 路由的代码已移至其自己的文件中,因此它不会弄乱主应用程序/cats/birds 的代码在它们自己的文件中的结构类似。通过将此代码分成三个小应用程序,您可以单独处理每个应用程序的逻辑,而不必担心它会如何影响其他两个应用程序。

如果您有与所有三个路由相关的代码(中间件),您可以将其放在 主应用程序 中,在 app.use(...) 之前来电。如果您的代码(中间件)仅与其中一个路由相关,则可以将其放入该路由的文件中。

关于node.js - express.Router 和 app.get 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305120/

相关文章:

node.js - 如何使用 Node JavaScript 通过电子邮件发送 Selenium 测试报告者的输出

node.js - 乱码而不是 html 响应作为 node.request 中的正文

arrays - 如何使用 Sequelize.js 和 PostgreSQL 验证数组字段的数组输入?

javascript - express 中可变数量的路线参数?

javascript - 快速路由——路由到/secrets时出现404错误,我错过了什么

javascript - 存储 MongoDB 结果(Promise 待定)

node.js - 使用 nodejs 在单个请求上解决多个 Azure 服务总线消息

javascript - 有什么理由不将请求/响应作为参数传递?

node.js - 如何在 Kraken JS 中创建全局变量

javascript - Express 与浏览器结合使用 Node 同步