加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何正确地将angularjs模块控制器/服务/ etc拆分到自己的文件中

发布时间:2020-12-17 06:53:57 所属栏目:安全 来源:网络整理
导读:我已经看到一些项目将所有“片段”(控制器/服务/指令)保存到一个文件中的模块中. angular-app就是这样的. 例: angular.module('myModule',['depA','depB']) .controller('MyController',function() {}) .service('myService',function() {}); 然而,我过去曾
我已经看到一些项目将所有“片段”(控制器/服务/指令)保存到一个文件中的模块中. 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读