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' }
));
请注意,如果模块以相反的顺序列出,上面的代码将无法按预期工作。
我倾向于将依赖项按照它们在我的应用程序中的使用大致顺序排列,但是有没有好的做法呢? 该命令有任何影响吗?
模块可以按任何顺序(甚至并行)加载,因为模块会延迟执行。 (字面意思来自 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' }
));
请注意,如果模块以相反的顺序列出,上面的代码将无法按预期工作。