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

cra*_*aft 9 node.js express

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

文件说,路由器是良好的:

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

但是,似乎找不到任何其他理由将这些路由移动到更小的路由器单元中。想知道是否有性能原因或其他我没有考虑的事情。

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

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

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

Usm*_*kil 7

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

代码大小相关性

应用程序的大小无关紧要。它是关于不将不相关的代码打包在一起。根据您所阐述的内容,您有如下列表所示的 URL,所有这些 URL 都是从同一文件路由的。

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

那只有 8 个,现在如果您决定添加子目录怎么办?将所有内容打包到一个文件中将使您更有可能偷工减料或避免重构并查看上面的对象有多不相关,它们真的都属于同一个文件吗?

主程序

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


Pau*_*aul 5

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

如果您只有 10 个路由,没有它也可以,尤其是当它们都需要相同的中间件时。在那个大小下,这是个人喜好,没有性能优势等。

一旦您开始拥有 3-4 个或更多资源(模型),并且需要为每个资源(模型)创建、读取、更新和删除路由,或者如果某些已通过身份验证而其他未通过身份验证等,您就会开始更加欣赏该组织。