在多个应用程序之间重用angularjs代码

时间:2015-05-19 15:27:42

标签: angularjs

我有一些angularjs文件,它具有对第三方服务的RESTAPI访问权限。 说,我有多个需要使用相同的angularjs文件的java应用程序。 分享文件的最佳方式是什么。

基本上,在过去的日子里(我在谈论后端代码),我们会编写一个部署为服务的应用程序,所有其他应用程序都使用此服务。我如何通过角度实现这一点..请记住,我主要是一个后端开发人员并进入新的前端世界

感谢

4 个答案:

答案 0 :(得分:3)

我建议使用Bower来维护可重用的组件。在他们自己的模块中开发独立功能,无论它们是directiveservice还是Angular组件都无关紧要,然后将它们作为Bower依赖项安装到任何单独的Angular应用程序中。< / p>

Bower有documentation on creating packages,Brian Ford写了一篇关于使用Bower编写可重复使用的Angular组件的nice (albeit a bit outdated at places) tutorial

所以,基本上你的工作流程会是这样的:

  1. 开始开发您的模块。如果它已经存在,你可以把它拉出当前的位置。

    mkdir your-component-name
    cd your-component-name
    $editor your-module.js
    
  2. 一旦你your-module.js开始(不需要先完成开发,实际上最好不要,如果你正在开发一个全新的组件),是时候初始化你的{{3} } component。

    bower init
    

    您将被要求进行一些初始设置,例如组件名称(目录名称的默认值,例如your-component-name),初始版本号,主文件(最有可能是your-module.js)等。大多数情况下默认值都很好。成功运行bower init后,您的bower.json可能看起来像这样:

    {
      "name": "your-component-name",
      "version": "0.0.0",
      "main": 'your-module.js',
      "license": "MIT",
      "ignore": [
        "**/.*",
        "node_modules",
        "bower_components",
        "test",
        "tests"
      ]
    }
    

    当然你可以手动完成所有这些操作,但使用bower init帮助工具很好。

  3. 继续发展。如果您有任何外部依赖项,您也可以使用Bower添加它们:

    bower install external-dependency --save
    
  4. 完成开发?是时候发布您的组件,以便它可以在您的应用程序中使用。如果您尚未初始化Bower存储库,请从它开始:

    git init .
    

    添加你的作品,提交并标记它:

    git add <your-component-contents>
    git commit -m "v0.0.0"
    git tag v0.0.0
    

    除了version中的bower.json属性值之外,这是此部分(注意Git正在谈论component.json - 这是不幸的过时的东西),您将能够在所有应用程序中轻松维护您的组件。需要改变吗?只需这样做,提高版本号,提交,标记并在需要时运行bower update

  5. 下一步是将您的代码发布到Git存储库中,例如Brian Ford's tutorial

    git remote add origin git@github.com:your-github-user-name/angular-your-component-name.git
    git push -u origin master
    

    然后可以安装组件:

    bower install your-github-user-name/angular-your-component-name
    

    甚至可以从私人仓库安装该组件,例如,如果您不想在公司外部发布该组件(请参阅GitHub中标题“Bower Package Stewardship”标题下的内容更多细节):

    bower install git@github.com:your-github-user-name/angular-your-component-name.git
    # or from any other arbitrary git repo
    

    另一方面,如果你希望发布新创建的组件,你应该考虑注册它:

    bower register angular-your-component-name git@github.com:your-github-user-name/angular-your-component-name.git
    

    因此可以搜索它,并且更容易安装:

    bower install angular-your-component-name
    
  6. 开始在Angular应用程序中使用您的组件。每当您发现某个应用程序出现错误/缺失功能时,您就可以修复组件,执行新版本,然后逐个更新应用程序。

  7. 然后您还可以使用Brian Ford's tutorial代替npm。工作流程也几乎相同,当然不同于工具特定部分,但没有大的差异。我现在不会进入Bower包装细节,只是想提一下作为替代工具。

答案 1 :(得分:1)

解决方案1:

这可以完全按照你描述的方式实现。

部署服务AngularJS应用程序(包含所有服务) 例如:tomcat7/www/myServiceApp 因此,您所需的所有内容都将分配到myServiceApp/js/myShareService.js

在需要访问它的应用上,您可以引用所有JS文件(和其他文件),例如<script src="../myServiceApp/js/myShareService.js"></script>

当然,使用该解决方案,两个服务都应部署在同一WebServer上

解决方案2:

我个人更喜欢这个解决方案,涉及持续集成。 我将持续集成的第一步中的所有共享资源复制到我的应用程序目录,以便每个应用程序都是独立的。

答案 2 :(得分:1)

在Angular中,我们将应用程序与modules分开,这相当于Java中的package。假设您想要创建一个可以重用于其他Angular JS应用程序的包。

样品

外部套餐

angular.module('my-awesome-app', [])
       .service('FooService', function () {
            // Awesome code(s) here
       });

应用套餐

angular.module('another-app', ['my-awesome-app'])
       .controller('AppController', function (FooService) {
            // Awesome code(s) here
       });

而不是使用import我们将my-awesome-app设置为another-app的依赖项(这就是为什么我们将它放在数组上),以便您可以调用它的服务。

答案 3 :(得分:0)

创建包含Angular Module的JS文件,而Angular Module又包含Factory以公开API。缩小文件并通过URL或直接包含在项目中使用它。