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

时间:2020-02-12 10:30:52

标签: angular nrwl-nx

我想知道使用ngular库而不是Angular中的模块有什么好处,就像nx.dev建议的用于monorepo体系结构一样。

我了解npm可发布功能(例如另一个仓库将使用的界面)的好处,但是为什么我要使用与业务相关的功能(例如主页)来制作库,例如:

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

1 个答案:

答案 0 :(得分:5)

NX建议您将90%以上的代码放入库中,并且这些库的目的不仅仅是在不同应用程序之间共享代码即使没有共享代码也可以使用lib,并且仅将应用文件夹用于路由和环境之类的配置。

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

因此,在您的情况下,它可以是可以延迟加载到应用程序中的库,可以管理自己的路由,这是从书中摘录的库类型的列表

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

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

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

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

当您看到所有这些类型的lib时,您就会明白,主意是在应用程序的libs中拥有最大的代码。

我邀请您在 Victor Savkin 谈论libs时进行检查

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