gpt4 book ai didi

node.js - express.Router() 与 express() 中的 express

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:49 27 4
gpt4 key购买 nike

如 express 所述routing guidethis answer ,我们可以创建“迷你应用程序”并从主应用程序使用它。但是我看到一段代码,它在模块中使用 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() 更好?

最佳答案

当你在一个有很多路由的服务器上工作时,将它们放在一个 Main 文件中可能会造成混淆。 let router = express.Router() 选项的工作方式与 let app = express() 不同。

虽然 app 返回一个 app 对象,router 将返回一个小的 app 片段,类似于 app,您将在其中使用逻辑稍后在 Main 上调用它们。

最重要的,关于您的问题,路由器是隔离的,不会干扰应用程序中的其他,成为一个单一的环境。

https://expressjs.com/en/api.html#router

A router object is an isolated instance of middleware and routes. You can think of it as a “mini-application,” capable only of performing middleware and routing functions. Every Express application has a built-in app router.

A router behaves like middleware itself, so you can use it as an argument to app.use() or as the argument to another router’s use() method.

关于node.js - express.Router() 与 express() 中的 express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54708015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com