如何正确地将angularjs模块控制器/服务/ etc拆分到自己的文件中
我已经看到一些项目将所有“片段”(控制器/服务/指令)保存到一个文件中的模块中.
angular-app就是这样的.
例: angular.module('myModule',['depA','depB']) .controller('MyController',function() {}) .service('myService',function() {}); 然而,我过去曾在大型角度项目中为团队工作,其中个人控制器/服务/指令保存在他们自己的文件中.我喜欢将它们保存在自己的文件中以保持文件较小的原因.现在的问题是,我是负责将初始部分和构建过程放在一起的人.之前我所要做的就是编写应用程序代码并遵循这些项目的标准. 为了正确地使用单独的文件,我相信我必须有一个主模块文件. 例: // file 1 angular.module('myModule','depB']); // file 2 angular.module('myModule') .controller('MyController',function() {}); 所以我的问题是,我需要确保发生什么文件加载顺序?我只需要确保在文件2之前加载主模块文件(文件1)吗? 这对我来说似乎很奇怪.如果还有一个服务文件附加到前面提到的模块并且控制器文件2已经加载,但是服务文件还没有加载,那么angular是否可能调用该控制器文件然后最终导致事情变得走出低谷,重新振作起来,重整旗鼓? 另外,如果您认为我以错误的方式处理这个问题,我很乐意听取您的建议. 解决方法
模块加载顺序
只需确保在注册新模块时,在应用程序引导时,它的模块依赖性应该已经由浏览器加载. 所以,只要你这样做: angular.module('myApp',['dep1','dep2','dep3']); 应用程序引导时,应该已经加载了dep1,dep2和dep3的文件. 如果您使用< script>标签和自动引导(角度默认值)然后你的< script>的顺序标签应该无关紧要.但是,如果使用像requirejs这样的库,请确保在手动引导之前加载所有依赖项. 其他考虑因素 只要您的模块以正确的顺序加载,那么.. >无需担心控制器,指令,服务,工厂,提供程序,常量或值的顺序 关于前两点,依赖的顺序(例如[‘dep1′,’dep2′,’dep3’] vs [‘dep2′,’dep3′,’dep1’])也会影响执行顺序运行块和配置块. Angular将遍历依赖树两次并按顺序执行所有配置块,然后执行所有运行块. Angular使用post-order traversal初始化模块及其关联的配置和运行块.因此,如果我们将模块依赖项表示为树: 遍历的顺序是ACEDBHIGF (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |