9

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

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

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

4

2 回答 2

1

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

想象以下示例:

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

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

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

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

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

于 2018-01-08T12:40:27.360 回答
0

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

但是,如果您想使用提前编译和延迟加载,您应该在共享之外执行不同的模块。仅对可重用组件(多次使用的组件)和所有通用组件使用 Shared,例如:在多个页面上可见的图表组件(即:多个模块)共享的内容将在应用程序启动时加载,因此它不能太大。

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

于 2018-01-08T13:17:36.747 回答