express.Router 和 app.get 之间的区别?

2023-12-22

我从 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;

When var app = express()被调用时,会返回一个app对象。将此视为main app.

When var router = express.Router()被称为,略有不同mini app被返回。背后的想法mini app是应用程序中的每条路线都可能变得非常复杂,并且将所有代码移动到单独的文件中会让您受益匪浅。每个文件的路由器变成mini app,其结构与main app.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

express.Router 和 app.get 之间的区别? 的相关文章

随机推荐