首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >express.Router()与多个express()对象之间的区别?

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

Stack Overflow用户
提问于 2016-04-28 12:09:24
回答 1查看 578关注 0票数 1

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

代码语言:javascript
复制
// 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()来改变应用程序,它会起作用,因为这两个文件都充当了cars.js()的新实例,我们称之为mini- express.Router()。那么新的express.Router()对象有什么用呢?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 01:45:21

最简单地说,路由器是express应用程序的轻量级版本,或as Express docs put it,一个迷你express应用程序。

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

现在我想知道,如果我在cars.js和animals.js文件中都使用express()来改变应用程序,它会起作用,因为这两个文件都充当了cars.js()的新实例,我们称之为迷你应用程序。那么新的express.Router()对象有什么用呢?

那么,您应该仍然能够使用express()而不是express.Router()来实现隔离路由目的,但是这样做也会带来许多可能不会使用的额外代码,因此这是一个不必要的开销。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36905077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档