在哪里指定模块依赖?

时间:2015-03-23 04:29:33

标签: javascript angularjs dependency-injection

我遵循按功能组织角度资产的标准做法;例如AngularJS Folder StructureAngularJS Best Practices: Directory Structure

我应该将模块/依赖项声明放在哪个文件中?

我试图解决以下问题:

  • 我希望能够出于维护原因按字母顺序对<script>引用进行排序,但我不能因为这会破坏我的Angular引导程序(对于某些模块)。
  • 我已经尝试将它们保存在模块中按字母顺序排列的第一个*.js文件中,但是当我的应用程序逐渐增加移动我的依赖声明时,我花了很多时间。
  • 我经常不得不四处寻找模块声明。
  • 由于相关原因,我最终经常盯着Angular相对无法提供信息的模块错误。
  • 无论如何,将模块声明附加到特定控制器似乎意味着不存在直接关联。

以下是一个例子:

metric/
    _module.js // Should I create this file?
    detail-controller.js
    detail.html
    search-filter.js
    selector-controller.js
    selector-directive.js
    selector.html

目前,对于这个模块,我的模块控制器之一存在这行代码,你猜哪一个! ;)

作为一个我不满意的可能解决方案,我应该将每个模块定义放在自己的小型单行文件中吗?

angular.module('metric', ['lib', 'ngSanitize', 'ui.select', 'data']);

你是怎么做到的?我错过了其他一些聪明或明显的解决方案吗?

P.S。作为一个相关问题,如果您愿意,如何跟踪模块的哪些组件是依赖项的来源?

2 个答案:

答案 0 :(得分:0)

既然我已经使用了一段时间了,并且因为我已经开始使用gulp预编译我的javascript,单行模块声明文件对我来说似乎是最好的解决方案。

我将该文件命名为<special-character>module.js,以便在视觉上和编译时将其排序到顶部。因为我的布局约定是一个文件夹=一个模块,这是示意性的。我的特色是破折号,YMMV。无论如何,我的个人.js文件名都没有显示在生产编译版本中。

最初困扰我的是我的项目中有一个单行文件,但现在我很感激。它被编译到我的应用程序javascript与gulp,所以这不是性能问题。此外,还有一个显而易见的地方可以查找依赖项,清除依赖项更改的修订控制日志,以及使用我自己的自定义工具从源代码中记录依赖项的简单过程。

答案 1 :(得分:0)

我会进一步分解它。

metric/ 
    metric.js
    controllers/
        detail-controller.js
        selector-controller.js
    directives/
        selector-directive.js
    filters/
        search-filter.js
    templates/
        detail.html 
        selector.html