angular 模块依赖列表是否有序?

Is angular module dependency list ordered or not?

我倾向于将依赖项按照它们在我的应用程序中的使用大致顺序排列,但是有没有好的做法呢? 该命令有任何影响吗?

模块可以按任何顺序(甚至并行)加载,因为模块会延迟执行。 (字面意思来自 angular docs)我使用的 "best practice" 首先是外部模块,如 ngRoute、ngMessages、ui.bootstrap 等,然后是我的个人模块,如控制器、服务、过滤器...

在基本场景中,模块可以按任何顺序加载,并且可以出于可读性目的进行排序 - 它们无论如何都会被解析。但是,当模块服务被覆盖或模拟时,情况并非如此:

angular.module('originalModule', [])
  .value('service', 'original');

angular.module('mockedModule', [])
  .value('service', 'mocked');

在这种情况下

angular.module('app', ['mockedModule', 'originalModule']);

angular.module('app', ['originalModule', 'mockedModule']);

将导致 service 分别具有 'original' 或 'mocked' 值。

这可以用于生产,例如当某些 constant 应该以这种方式覆盖时(如果可以以更有意义的方式实现相同的目的,则不推荐这种做法)。

在 Angular 测试中,描述的行为经常用于模拟服务,

  beforeEach(module(
    'app',
    { service: 'mocked value' }
  ));

请注意,如果模块以相反的顺序列出,上面的代码将无法按预期工作。