正如在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;routes/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()更好?
发布于 2019-02-15 16:30:02
当您使用有许多路由的服务器时,将它们放在主文件中可能会令人困惑。let router = express.Router()选项的工作方式与let app = express()不同。
当app返回一个app对象时,router将返回一个小的应用片段,类似于app,您将在主程序的后面使用逻辑调用它们。
关于您的问题,最重要的是,router是孤立的,不会干扰应用程序中的其他,因为它是一个单独的环境。
https://expressjs.com/en/api.html#router
路由器对象是中间件和路由的独立实例。您可以认为它是一个“迷你应用程序”,只能执行中间件和路由功能。每个Express应用程序都有内置的应用程序路由器。 路由器的行为类似于中间件本身,因此可以将其用作app.use()的参数或另一个路由器的use()方法的参数。
https://stackoverflow.com/questions/54708015
复制相似问题