如何使用 angularJS 在多个项目之间共享代码

2024-02-27

我想知道在多个 AngularJS 项目之间共享公共库和自己的模块的最佳实践是什么。

假设我正在从事两个不同的项目。两者都依赖于 angularJS、bootstrap 等库。

我有一个如下所示的文件结构:

  • Project 1
    • 索引.html
    • css
    • js
      • module A
      • module B
    • lib
      • angular
      • 引导程序
  • Project 2
    • 索引.html
    • css
    • js
      • module B
      • module X
    • lib
      • angular
      • 引导程序

所以我正在考虑创建另一个包含所有共享组件的目录,以便我得到一些东西。喜欢:

  • Shared
    • angular
    • 引导程序
    • module B
  • Project 1
    • 索引.html
    • css
    • js
      • module A
  • Project 2
    • 索引.html
    • css
    • js
      • module X

我的模块 B 写成这样:

angular.module("moduleB", [])
    .service("SB", [function () {/*functionality here*/}]);
    .factory("FB", [function () {/*functionality here*/}]);

然后将其作为依赖项包含在我的项目 1/2 中,例如:

angular.module("project1", ["moduleB"]);

来实现这种方法。

那是最好的方法吗?有什么替代方案吗?


您可以这样做,但如果您希望项目 1 和项目 2 使用两个不同版本的共享组件,这可能会让您头疼。想象一下,您需要发布带有最新共享组件的项目 1,但项目 2 仍然依赖于先前版本的共享组件。真是一团糟。其他一些选项:

  1. 制作可作为依赖项包含在任一项目中的共享组件 Bower 组件(请参阅http://briantford.com/blog/angular-bower http://briantford.com/blog/angular-bower)
  2. 将所有共享资源编译为可相互访问的 URL(请参阅https://medium.com/@KamilLelonek/sharing-templates- Between-angular-applications-b56469ec5d85 https://medium.com/@KamilLelonek/sharing-templates-between-angular-applications-b56469ec5d85)
  3. 基本上在项目之间复制/粘贴组件,无论是手动还是使用类似 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(使用前将#替换为@)

如何使用 angularJS 在多个项目之间共享代码 的相关文章

随机推荐