Angular 中共享模块的理想大小



我有一个包含多个功能模块的 Angular 项目,但我不确定构建共享模块的最佳实践是什么。

  1. 是否认为最好在每个功能模块中导入一个大型SharedModule,即使它包含仅在少数功能模块而不是全部功能模块中使用的组件、管道、指令等?
  2. 还是将它们拆分为较小的模块(逻辑单元)并将它们逐个导入到仅在需要的地方的功能模块中更好?

我认为 (1) 听起来更容易编写,但我有点担心将部分未使用的代码导入每个功能模块可能会减慢我的应用程序速度并使延迟加载变得毫无意义。 如果有人能够阐明这两种策略的优缺点,那将是非常受欢迎的。谢谢!

当然,这取决于您的应用程序需求。我会根据您的其他模块需求亲自创建多个共享模块。

想象一下下面的例子:

  • 我有 2 个功能模块需要特定的自定义表。
  • 我有 3 个使用 flex 布局的功能模块,而使用自定义表格的 2 个功能模块中只有一个使用 flex-layout。

这是一个典型的示例,您将拥有一个导入和导出所有内容的大共享模块,但在这种情况下,3 个功能模块将在不使用表类时导入表类。

在这种情况下,我发现将共享模块分成几个符合我的需求很有用。 通常,这意味着我将创建一个 StyleSharedModule、一个 TableSharedModule 等。

无论如何,大小不是一个重要因素。你可以有一个非常轻的共享模块,有很多子模块,你也可以有一个非常重的共享模块,它只导入一些东西(但大东西)。

对我来说,逻辑需求是让你创建不同共享模块的重要因素,而不是大小。

从我创建的几个过去项目中,我可以说你还有不止一条路要走。

但是,如果你想使用提前编译和延迟加载,你应该做不同的模块,从共享中。仅对可重用组件(多次使用的组件)和所有通用组件使用共享,例如:在多个页面上可见的图表组件(即:多个模块) 共享的内容将在应用启动时加载,因此不得过大。

如果它是一个没有延迟加载的小项目,我看不到在共享模块中放置大量组件的目标。

最新更新