8

太好了,Angular 已经发布了第 6 版,并且 CLI 提供了一个生成库的选项——他们称之为“备受期待的功能”。

现在,从商业角度来看,我想知道:

  • 为什么你真的需要这个,
  • 为什么在现有项目内部而不是单独的项目中,您可以像往常一样通过 npm 安装...
  • 如果你想在你的项目中使用它,为什么不使用一个模块呢。

所以我明白了,在 npmjs 上发布一些东西,并希望整个世界和未来的互联事物都需要它。图书馆,不错。

在更大公司的大型系统中,我们可以重用库,但我们已经能够通过模块重用东西。每次更改某些内容时,我都需要单独构建库并重新编译..

使用库而不是模块的原因是什么?

(目前我会说一个库可以比一个模块更大,所以我会它来更好地组织我的应用程序)

4

2 回答 2

11

这个网站上,我找到了一个很好的解释。

模块

驻留inside of a project并让我们捆绑属于一起的组件。我们可以在需要的地方导入这个模块,而不是在根级别声明所有组件。即 AuthModule 可以处理所有与身份验证相关的东西。无需让应用知道该模块正在使用哪些组件。

图书馆

在公司中,有许多不同的应用程序,将来一些/许多可能会转向基于角度的应用程序。

DevOps 想要轻松并把事情放在一个地方,所以 Angular CLI 团队引入了工作区——它可以包含多个项目。

然后共享 AuthModule 之类的东西就变得容易了。我们制作了一个库并在不同的项目中共享它。不再需要将此代码复制到每个项目的核心文件夹中。

这里是原文:

Angular 6 中谈论最少的特性之一是 Angular CLI 工作区。工作区或 Angular CLI 工作区使 Angular 开发人员能够在一个工作区中拥有多个项目。这会将您的所有项目都放在同一个工作区下。这不仅限于应用程序,还包括角度库。

这使开发人员可以自由地将大型应用程序分解为更小的应用程序和模块。然后可以使用这些特定模块在应用程序之间共享诸如身份验证模块之类的模块。这通过使用由 Angular CLI 生成和管理的共享库减少代码重复来改进工作流程。

伟大的!感谢您的回答,这是有道理的。

于 2018-06-25T05:42:11.337 回答
5

扩展@hogan 答案:

  • 它们还提供了一种构建 NPM 包的简单方法,方法是生成一个“dist”文件夹,该文件夹封装了库和 NPM 版本,远离当前的开发状态或开发工作区。

  • 使用 AngularCLI 创建一个与我们预期的 Angular 库同名的工作区。

  • --Prefix 选项,AngularCLI 生成器将自动为正确的库或组件环境使用前缀。

  • AngularCLI 意识到它需要“ng-packagr”。它将它添加到我们工作区 package.json 中的 devDependencies

  • 用法,现在您可以直接从 angularCLI 构建、测试等等。

于 2018-09-11T21:14:02.820 回答