我从NodeJS和Express 4开始,我有些困惑。我正在阅读Express网站,但看不到 何时 使用路由处理程序或何时使用express.Router。
express.Router
如我所见,例如,如果我想在用户点击时显示页面或其他内容,/show则应使用:
/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()被调用时,会返回一个应用对象。将此视为 主要应用程序 。
var app = express()
当var router = express.Router()被调用时,一个稍微不同的 迷你应用程序 返回。 微型应用程序 背后的想法是, 应用程序 中的每条路线都可能变得非常复杂,并且将所有代码移入一个单独的文件中将使您受益。每个文件的路由器都变成一个 微型应用程序 ,其结构与 主应用程序 非常相似。
var router = express.Router()
在上面的示例中, / dogs 路由的代码已移至其自己的文件中,因此不会干扰 主应用程序 。 / cats 和 / birds 的代码在它们自己的文件中的结构类似。通过将此代码分成三个 微型应用程序 ,您可以独立处理每个逻辑 程序 的逻辑,而不必担心它将如何影响其他两个逻辑 程序 。
如果您具有与所有这三种路由有关的代码(中间件),则可以在调用之前将其放在 主应用程序中app.use(...)。如果您具有仅与那些路由之一相关的代码(中间件),则可以将其仅放入该路由的文件中。
app.use(...)