角模块与库

hog*_*gan 2 angular-cli angular angular-library angular6 angular-cli-v6

太棒了,Angular发布了版本6,CLI提供了生成库的选项-他们称其为“备受期待的功能”。

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

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

所以我明白了,在npmjs上发布了一些东西,希望整个世界以及未来的连接事物都需要它。图书馆,太好了。

在更大的公司的大型系统中,我们可以重用库,但是我们已经能够使用模块重用东西。我需要分别构建库并在每次更改内容时重新编译。

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

(现在我想说,一个lib可以比模块更大,所以我只是用它来组织我的应用程序更好)

hog*_*gan 7

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

模组

驻留inside of a project并让我们将属于一起的组件捆绑在一起。我们可以在需要的地方导入该模块,而不是在根级别声明所有组件。即AuthModule可以处理所有与auth相关的内容。无需让应用知道此模块正在使用的组件。

图书馆

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

DevOps希望让您省心并把事情放在一个地方,因此Angular CLI团队引入了工作区-它可以包含多个项目。

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

这里是原文:

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

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

大!谢谢你的回答,有了这个道理。


小智 5

扩展@hogan 答案:

  • 它们还提供了一种通过生成“dist”文件夹来构建 NPM 包的简单方法,该文件夹将库和 NPM 版本封装在当前开发状态​​或开发工作区之外。

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

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

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

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