NX one Ui-lib 或为每个 Ui 用例创建一个库

NX one Ui-lib or create a lib for each Ui usecase

所以我想在我的 angular 项目中创建共享库。我在下面列出了我的两种方法,它们都可以发挥作用,但我不知道我应该实施哪种方法更好。

#1 一个 Ui 包含 X 组件的库

libs
├── [...]
└── shared
    └── ui (lib)
        ├── ui-card (component)
        └── ui-*

#2 每个库 Ui

libs
├── [...]
└── shared
    ├── ui-card (lib)
    │    └── card (component)
    └── ui-* (lib)
        └── *

这篇文章说我应该遵循我的第二种方法,但它没有解释为什么你应该为每个 ui 创建一个库:https://medium.com/showpad-engineering/how-to-organize-and-name-applications-and-libraries-in-an-nx-monorepo-for-immediate-team-wide-9876510dbe28

如果我的问题的解决方案也可以用于 data-accessutil libs

,我也很高兴知道

如果您在一个模块中有多个组件,那么您的最终捆绑包将包含所有组件,即使您只使用其中的一小部分。

如果您为每个组件(或始终一起使用的组件)创建一个模块,您的包大小会更有效率,但最终会有更多的样板代码。

第二种方法也是Angular Material之后的那种。


当我们处理作为应用程序一部分的 UI 库时,我认为没有必要为每个组件配备一个模块。

如果您像 Material 一样将 UI 库发布为“真正的 npm 库”,那就另当别论了。

对于 data-accessutilfeature 库,我绝对不会遵循第二种策略。这些通常是为应用程序的特定需求而设计的,即您将需要所有这些,在这种情况下,更少的样板文件更重要。