我从NodeJS和Express 4开始,我有点困惑。我一直在读快递网站,但不能看到_when使用路由处理程序或什么时候使用express.Router。
正如我可以看到,如果我想显示一个页面或什么时候用户点击/显示为例,我应该使用:
var express = require('express') var app = express() app.get("/show",someFunction)
在开始,我认为这是老,对express3,是正确的或这是express4的方式吗?
如果这是在express4中做的方式,什么是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('/',res) { res.send('POST handler for /dogs route.'); }); module.exports = router;
当在app.js中调用express()时,返回一个app对象。将应用程序对象视为Express应用程序。
当express.Router()被调用时,返回一个稍微不同的“迷你应用程序”。 “迷你应用程序”背后的想法是,你的应用程序中的不同路线可能变得相当复杂,你会从将该逻辑移动到一个单独的文件中受益。
在上面这个简单的例子中,/ dogs路由的逻辑已经被移动到它自己的文件,所以它的GET和POST处理程序不会混乱app.js。现在你可以独立地处理任何请求/狗的逻辑,不担心它将如何影响/猫和/鸟。
如果你有与所有三个路由相关的逻辑(在Express中称为中间件),你可以把它放在app.use(…)调用之上的app.js中。如果你的逻辑只适用于其中一个路由(/ dogs),那么你只将它放在该路由的文件中。