2

我想知道在 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
4

1 回答 1

6

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

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

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

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

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

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

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

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

当Victor Savkin谈到 libs时,我邀请你检查一下

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

于 2020-02-12T10:59:01.187 回答