为什么以及何时应该使用express.Router()?

时间:2018-02-08 05:31:04

标签: node.js express

问题1: 我为什么要使用express.Router()?

documentation表示路由器适合:

  • 将路线组织成单独的文件,从而促进模块化
  • 构建特定于路由器的中间件
  • 基本上创建了一个迷你快递应用

但是,似乎无法找到将这些路由移动到较小路由器单元的任何其他原因。想知道是否有表演原因或其他我不在考虑的事情。

问题2: 我什么时候应该使用express.Router()?

例如,我有一个快递应用程序的大约10条路线,这些路线当然可以分为不同的路由器(小部件,用户等)。

在这个应用程序中使用express.Router()是否有意义?试图衡量express.Router是否用于更大的项目,其中有数十(和数十)路线。有10条路线,在没有分成单独的路由器的情况下仍然感觉有些可管理。

2 个答案:

答案 0 :(得分:3)

主要是代码组织/可维护性和范围中间件。

如果你拥有10条路线,没有它就没问题,特别是如果它们都需要相同的中间件。在这个尺寸上,这是个人偏好,没有性能优势等。

一旦你开始拥有3-4个或更多的资源(模型),并且需要为每个创建,读取,更新和删除路由,或者如果某些资源经过身份验证而其他资源未经过身份验证等,那么您就会开始更多地了解组织。

答案 1 :(得分:3)

我会用它。您的劳动力成本很低,从您自己的角度来看更加清洁。 10条路线足以证明分离关注点的合理性。即使我有一条路线,我也会这样做,所以当我查看我的app.js或主app文件时,我只会查看影响整个系统的代码。

代码大小相关性

应用程序的大小无关紧要。它不是将不相关的代码打包在一起。根据您所阐述的内容,您可以使用以下列表中的URL从同一文件中进行路由。

  • /帐户
  • /用户
  • /发票
  • /销售
  • /产品
  • /鞋
  • /怪物
  • /魔

这只有8,现在如果你决定添加子目录呢?将所有内容打包到一个文件中会使您更有可能偷工减料或避免重构并查看上述对象的无关性,它们是否真的属于同一个文件?

<强> Main.js

app.use('/accounts',accountsRoute)
app.use('/users',userRoute)
app.use('/invoices',invoicesRoute)
app.use('/dancers',dancersRoute)
app.use('/monsters',monstersRoute)
app.use('/magic',magicRoute)