将功能打包到库中会强制库中的工件与应用程序的业务逻辑分离。这有助于避免各种不良做法或架构错误,这些错误会使将来难以分离和重用代码。将代码放入一个单独的库比将所有内容都放在一个应用程序中要复杂得多。它需要更多的时间投入,需要管理、维护和更新这个库。但是,当在多个应用程序中使用该库时,这种复杂性会得到回报。Angular库是一个Angular项目,它与应用程序的不同之处在于它不能独立运行。必须在应用程序中导入和使用该库。使用如下命令行创建库:nggeneratelibrarymy-libangular.json该文件在projects节点下,新增一个my-lib节点,其projectType类型为library:层级结构和文件系统目录在angular.json也是一致的:这个库有自己单独的package.json:这个库不能单独运行,那怎么测试呢?使用以下命令行。ngbuildmy-lib--configurationdevelopmentngtestmy-libnglintmy-lib要使库代码可重用,您必须为其定义一个公共API。这个“用户层”定义了图书馆中消费者可以使用的内容。库的用户应该能够通过单个导入路径访问通用功能(例如NgModules、服务提供者和实用程序功能)。库的公共API维护在库文件夹下的public-api.ts文件中。当您的图书馆被导入应用程序时,从该文件导出的所有内容都将公开。下图是一个例子:我的服务类:PleaseuseNgModuletoexposetheseservicesandcomponents:UseanNgModuletoexposeservicesandcomponents.如何直接在我们AppModule的imports区域消费我们自研的库,导入我们的Angular库通过public_api.ts导出的组件和服务就足够了。通过依赖注入,导入我们库中导出的服务类的实例:运行Angular应用,在我们的Angular库中找到服务打印的字符串,说明该库使用成功:HowtousethelibrariesthatAngularhas这些库被用作npm包,它们通常带有一些与AngularCLI的良好示意图集成。要将可重用的库代码集成到您的应用程序中,您需要安装包并在使用时导入它提供的功能。对于大多数已发布的Angular库,您可以使用AngularCLI的ngadd
