Angular 库与 monorepo 中 Angular 模块的优势? NX架构

Benefits of Angular libraries vs Angular modules in a monorepo? NX architecture

我想知道在 Angular 中使用库而不是模块有什么好处,正如 nx.dev 对 monorepo 架构的建议。

我了解 npm 可发布功能的好处,例如另一个 repo 将使用的接口,但为什么我要从与业务相关的功能(例如主页)中创建一个库,例如:

myorg/
├── apps/
│   ├── todos/
│   └── todos-e2e/
├── libs/
      ├── todos/
        ├── home/   <-- why nx recommends making a library here?
          ├── src/
            ├── lib/
              ├── home.component.html/ts/scss
              ├── home.module.ts
├── tools/
├── README.md
├── workspace.json
├── nx.json
├── package.json

而不是

myorg/
├── apps/
│   ├── todos/
         [...]
         ├── home/   <-- just a simple lazy loaded module here
           ├── home.component.html/ts/scss
           ├── home.module.ts
│   └── todos-e2e/
├── libs/
├── tools/
├── README.md
├── workspace.json
├── nx.json
├── package.json
└── tsconfig.json

NX 建议您将超过 90% 的代码放在库中,这些库的目的不仅仅是在不同的应用程序之间共享代码 即使代码未共享,我们也可以创建一个库,并且仅将应用程序文件夹用于 路由 和环境等配置。

我们必须提到将代码分成小单元 (lib) 的好处,您可以 单独测试和构建它们

所以在你的情况下,它可以是一个可以延迟加载到你的应用程序中的库,它可以管理它自己的路由,这里是从他们的书中获取的库类型列表

  • 功能库:开发人员应将功能库视为为应用程序中的特定业务用例或页面实现智能 UI(带有注入服务)的库。

  • UI 库:UI 库仅包含演示组件。

  • 数据访问库:数据访问库包含用于与后端系统交互的服务和实用程序。它还包括所有与状态管理相关的代码。

  • 实用程序库:实用程序库包含许多库和应用程序使用的常用实用程序和服务。

当您看到所有这些类型的库时,您就会明白我们的想法是在库中拥有最多的代码,而不是应用程序。

Victor Savkin 谈到 libs

时,我邀请您查看此内容

https://youtu.be/qYNiOKDno_I?t=6m35s