【问题标题】:angular module name global declaration and reuse角度模块名称全局声明和重用
【发布时间】:2015-12-14 21:21:12
【问题描述】:

在概括 Angular 模块名称时需要帮助,

angular.module('my-old-name-app', [])

我在大约 100 多个控制器文件中使用它。
现在我想将模块名称从 my-old-name-app 更改为 my-new-name-app,所以我必须在所有文件中手动更改。
有什么办法可以避免这种情况吗?
我们可以有一个通用的模块名称全局声明并在所有文件中重用它吗??
我试过但找不到任何合适的解决方案。
注意:因为它是一个现有的项目。我无法重组/重新设计。

【问题讨论】:

    标签: javascript angularjs html web


    【解决方案1】:

    我在大约 100 多个控制器文件中使用它。

    所以不要在所有你的控制器中使用它。无论如何,如果您以更加模块化的方式设计您的应用程序,您可以避免这个问题。推荐的方法是将应用程序拆分为多个模块,例如按功能。然后,您要重命名的主模块将仅在一个地方使用。应用程序的定义可能是这样的:

    angular.module('mu-old-name-app', [
        'app.dashboard',
        'app.profile',
        // ...
    ]);
    

    然后模块app.dashboard 将包含相应的控制器、服务等。模块app.profile 将包含它自己的东西等。

    【讨论】:

    • 因为它是一个现有的项目,所以很难不在所有文件中使用它。我无法重组整个项目。有什么解决办法吗?
    • 如果你想把它做好,那么你必须有更好的结构。您可以轻松地将应用程序的各个部分一个一个地移动到子模块中。但除非不是这种情况,否则您将不得不在所有应用程序中使用全局查找和替换。也很容易解决:)。
    【解决方案2】:

    在angularjs应用中避免全局变量,有一个很好很干净的style-guide made from J. Papa

    当然,如果您需要重新设计整个应用程序,您需要在每个使用它的文件中搜索并替换旧的模块名称。

    构建 angularjs 应用程序的一个好方法是使用多个模块, 举个博客例子。博客通常由以下组件组成:

    1. 仪表板 - 用于帖子编辑
    2. 列表和单一视图
    3. 关于作者信息
    4. 联系人与作者保持联系

    现在,您有多种方式来构建您的应用程序,最简单的方法是使用一个名为 blog 的模块并将每个组件附加到它,但是,如果将来进行重构,您会感到沮丧.

    一个好的解决方案是拆分您的应用,为每个组件创建一个模块:

    angular
      .module('blog.dashboard')
    ;
    angular
      .module('blog.about')
    ;
    angular
      .module('blog.contacts')
    ;
    
    
    angular
      .module('blog', [
        'blog.dashboard',
        'blog.about',
        'blog.contacts'
      ])
    ;

    【讨论】:

    • 仅作为一个例子,如果“blog.contacts”在超过 50 个文件中使用,并且您想将“blog.contacts”重命名为“blog.RENAME.contacts”,我们仍然有在所有文件中手动更改它。对吗?
    • 首先它是一个现有的项目。我认为这不是我的问题的答案。
    猜你喜欢
    • 2021-11-20
    • 2020-07-11
    • 2011-01-07
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多