我从 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 app。 mini app 背后的理念是,您的应用程序中的每条路线都可能变得相当复杂,您可以从将所有这些代码移到一个单独的文件中受益。每个文件的路由器都变成了一个迷你应用,其结构与主应用非常相似。
在上面的示例中,/dogs 路由的代码已移至其自己的文件中,因此它不会弄乱主应用程序。 /cats 和 /birds 的代码在它们自己的文件中的结构类似。通过将此代码分成三个小应用程序,您可以单独处理每个应用程序的逻辑,而不必担心它会如何影响其他两个应用程序。
如果您有与所有三个路由相关的代码(中间件),您可以将其放在 主应用程序 中,在 app.use(...)
之前来电。如果您的代码(中间件)仅与其中一个路由相关,则可以将其放入该路由的文件中。
关于node.js - express.Router 和 app.get 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305120/