gpt4 book ai didi

javascript - express.Router() 与多个 express() 对象之间的区别?

转载 作者:行者123 更新时间:2023-11-30 16:06:53 26 4
gpt4 key购买 nike

我知道使用新的 express 4 路由器,我们可以将多个路由路径组织到不同的文件中,如下所示:

// In cars.js
const router = express.Router();
router.get('/brands', function(req, res) { ... });
router.get('/models', function(req, res) { ... });
module.exports = router;

// In animals.js
const routerTwo = express.Router();
routerTwo.get('/domestic', function(req, res) { ... });
routerTwo.get('/wild', function(req, res) { ... });
module.exports = routerTwo;

// In main.js
app.use('/cars', router); // matches `/cars/brands`, `/cars/models`.
app.use('/animals', routerTwo); // matches `animals/domestic`, `animals/wild`.

现在我想知道是否在 cars.jsanimals.js 文件,它会起作用,因为它们都充当我们称之为迷你应用程序的 express() 的新实例。那么new express.Router()对象有什么用呢?

express.Router() 对象中公开的方法和它们的功能是否可以通过多个 express() 实例(如模块化路由器处理程序等)实现?

最佳答案

简单来说,Router 是 express 应用程序的轻量级版本,即 as Express docs put it ,一个迷你 express 应用程序。

全局 express 对象带有更多资源来支持 View 和各种设置,而路由器基本上提供路由 API,如 .use.get .paramroute。路由器对象代表中间件和路由的独立实例,并且只能执行中间件和路由功能,这使得它非常适合高效地模块化路由处理。

Now I want to know if I change the express.Router() with simply express() in both cars.js and animals.js file, it'll work because both act as new instance of express() which we called mini-app. Then what is the use of new express.Router() object?

好吧,您仍然可以使用 express() 而不是 express.Router() 来实现隔离路由目的,但是这样您也带来了很多额外的代码您可能不会使用,因此这是不必要的开销。

这就是创建 express.Router() 的原因:提供路由模块化,而无需创建额外应用程序的开销。

相关:https://en.wikipedia.org/wiki/Liskov_substitution_principle

关于javascript - express.Router() 与多个 express() 对象之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905077/

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