正如快速路由指南和这个答案中提到的,我们可以use从主应用程序创建“迷你应用程序” 。但是我看到了一个代码,它使用app而不是router在模块中
应用程序.js
var express = require('express');
var userRoutes = require('./routes/user');
var app = express();
app.use('/user', userRoutes);
module.exports = app;
Run Code Online (Sandbox Code Playgroud)
路线/用户.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;
Run Code Online (Sandbox Code Playgroud)
我认为正确的用法routes/user.js应该是
router = express.Router()
Run Code Online (Sandbox Code Playgroud)
代替
app = express()
Run Code Online (Sandbox Code Playgroud)
但app = express()也有效!有什么区别,为什么router = express.Router()更好?
小智 3
当您使用有许多路由的服务器时,将它们一起保留在主文件中可能会造成混乱。该let router = express.Router()选项的工作方式与 不同let app = express()。
当app返回一个应用程序对象时,router将返回一个小的应用程序片段,类似于app,您稍后将在 Main 中使用逻辑来调用它们。
关于您的问题,最重要的是router, a 是独立的,不会干扰应用程序中的其他人,因为它是一个单一的环境。
https://expressjs.com/en/api.html#router
\n\n\n路由器对象是中间件和路由的独立实例。您可以将其视为\xe2\x80\x9cmini-application,\xe2\x80\x9d 仅能够执行中间件和路由功能。每个 Express 应用程序都有一个内置的应用程序路由器。
\n路由器的行为类似于中间件本身,因此您可以将其用作 app.use() 的参数或另一个 router\xe2\x80\x99s use() 方法的参数。
\n
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |