[英]express.Router() vs express() in express
如快速路由指南和此答案中所述 ,我们可以创建“迷你应用程序”并从主应用程序中use
它。 但是我看到了一个代码,它在模块中使用app
而不是router
app.js
var express = require('express');
var userRoutes = require('./routes/user');
var app = express();
app.use('/user', userRoutes);
module.exports = app;
路线/ user.js的
var express = require('express');
var app = express(); // not express.Router() !!
app.get('/:name', function(req, res) {
var userName = req.params.name;
res.render('user.jade', {
userName: userName
});
});
module.exports = app;
我假设在routes/user.js
的正确用法应该是
router = express.Router()
代替
app = express()
但app = express()
也有效! 有什么不同,为什么router = express.Router()
更好?
当您使用具有许多路由的服务器时,将它们一起保留在主文件中可能会令人困惑。 let router = express.Router()
选项与let app = express()
工作方式不同。
当app
返回一个app对象时, router
将返回一个小应用程序片段,类似于app
,您将使用逻辑稍后在Main上调用它们。
关于您的问题, 最重要的是,隔离的router
不会干扰应用程序中的其他 router
,而是单个环境。
路由器对象是中间件和路由的孤立实例。 您可以将其视为“迷你应用程序”,只能执行中间件和路由功能。 每个Express应用程序都有一个内置的应用程序路由器。
路由器的行为类似于中间件本身,因此您可以将其用作app.use()的参数或作为另一个路由器的use()方法的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.