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

标签 javascript angularjs module shared-libraries

我想知道在多个 angularJS 项目之间共享公共(public)库和自己的模块的最佳做法是什么。

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

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

  • Project 1
    • index.html
    • css
    • js
      • module A
      • module B
    • lib
      • angular
      • bootstrap
  • Project 2
    • index.html
    • css
    • js
      • module B
      • module X
    • lib
      • angular
      • bootstrap


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

  • Shared
    • angular
    • bootstrap
    • module B
  • Project 1
    • index.html
    • css
    • js
      • module A
  • Project 2
    • index.html
    • css
    • js
      • module X


我有模块B写成:
angular.module("moduleB", [])
    .service("SB", [function () {/*functionality here*/}]);
    .factory("FB", [function () {/*functionality here*/}]);

然后将其作为依赖项包含在我的 Project 1/2 中,例如:
angular.module("project1", ["moduleB"]);

来实现这种方法。

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

最佳答案

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

  • 使可以作为依赖项包含在任一项目中的共享组件 Bower 组件(参见 http://briantford.com/blog/angular-bower)
  • 将所有共享 Assets 编译成一个可相互访问的 URL(参见 https://medium.com/@KamilLelonek/sharing-templates-between-angular-applications-b56469ec5d85)
  • 基本上在项目之间复制/粘贴组件,手动或使用类似 gulp 的东西(见 https://groups.google.com/forum/#!msg/angular/TxE5yoQkG-U/6-vWAZsqn1YJ)

  • 第二个选项有很多移动部件,需要更改您的应用程序,更不用说无法在每个项目中部署不同版本的共享代码。第一个的好处是很容易分成 3 个存储库:项目 1、项目 2 和共享。如果 Shared 是 Project 1 和 Project 2 中的 Bower 依赖项,则简单的 bower update将为您提供任一项目的最新版本。或者,您可以将项目锁定到特定版本的 Shared。

    选项 3 似乎为您提供了最大的控制权,但您很快就会忘记您的项目正在使用哪个版本的 Shared。选项 1 解决了这个问题。

    关于javascript - 如何使用 angularJS 在多个项目之间共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29002979/

    相关文章:

    javascript - 使用 Angular js 检测 JS 对象的变化

    javascript - 将 JS 与 rollup 和 Babel 捆绑以在 IE11 中使用

    mysql - XAMPP MySQL 模块无法启动

    javascript - Jquery 单击仅在切换时工作一次

    javascript - 使 js 文件在 sails 应用程序中可用(无需将它们注入(inject)每个 View )

    javascript - Firebase child_changed 与 equalTo

    angularjs - Ng-Repeat 内的 Angular JS 日期格式过滤器不格式化

    javascript - Angular http GET 循环使用新的 URL 作为响应

    Angular AppComponent 在子组件之后加载

    javascript - 过渡动画 d3.js 的关闭路径