我想知道在多个 AngularJS 项目之间共享公共库和自己的模块的最佳实践是什么。
假设我正在从事两个不同的项目。两者都依赖于 angularJS、bootstrap 等库。
我有一个如下所示的文件结构:
所以我正在考虑创建另一个包含所有共享组件的目录,以便我得到一些东西。喜欢:
- Shared
- Project 1
- Project 2
我的模块 B 写成这样:
angular.module("moduleB", [])
.service("SB", [function () {/*functionality here*/}]);
.factory("FB", [function () {/*functionality here*/}]);
然后将其作为依赖项包含在我的项目 1/2 中,例如:
angular.module("project1", ["moduleB"]);
来实现这种方法。
那是最好的方法吗?有什么替代方案吗?
您可以这样做,但如果您希望项目 1 和项目 2 使用两个不同版本的共享组件,这可能会让您头疼。想象一下,您需要发布带有最新共享组件的项目 1,但项目 2 仍然依赖于先前版本的共享组件。真是一团糟。其他一些选项:
- 制作可作为依赖项包含在任一项目中的共享组件 Bower 组件(请参阅http://briantford.com/blog/angular-bower http://briantford.com/blog/angular-bower)
- 将所有共享资源编译为可相互访问的 URL(请参阅https://medium.com/@KamilLelonek/sharing-templates- Between-angular-applications-b56469ec5d85 https://medium.com/@KamilLelonek/sharing-templates-between-angular-applications-b56469ec5d85)
- 基本上在项目之间复制/粘贴组件,无论是手动还是使用类似 gulp 的东西(参见https://groups.google.com/forum/#!msg/angular/TxE5yoQkG-U/6-vWAZsqn1YJ https://groups.google.com/forum/#!msg/angular/TxE5yoQkG-U/6-vWAZsqn1YJ)
第二个选项有很多移动部件,需要更改应用程序,更不用说无法在每个项目中部署不同版本的共享代码。第一个的优点是可以轻松划分为 3 个存储库:项目 1、项目 2 和共享。如果 Shared 是项目 1 和项目 2 中的 Bower 依赖项,则一个简单的bower update
将为您提供任一项目的最新版本。或者您可以将项目锁定到特定版本的 Shared。
选项 3 似乎为您提供了最大的控制权,但您很快就会忘记您的项目正在使用哪个版本的 Shared。选项 1 解决了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)