AngularJS执行流程详解
一.启动阶段
浏览器解析HTML页面,读取到angular.js的<script>标签后会停止解析后面的DOM节点,开始执行angular.js,与此同时,Angular会设置一个事件监听器来监听DOMContentLoaded事件,当Angular监听到这个事件后,Angular就启动了。
二.初始化阶段
Angular启动后,它会查找ng-app指令,然后初始化一系列必要的组件(即$injector、$compile服务以及$rootScope),接着继续解析DOM。
三.编译、链接阶段
1.Angular使用$compile服务通过遍历DOM树的方式查找带有指令的DOM元素,然后根据指令的priority优先级对这些查找到的指令进行排序。
2.之后使用$injector服务查找和收集每个指令下面的compile函数,并执行它。
3.每个节点的compile方法运行之后,$compile服务就会调用链接函数。这个链接函数为绑定了封闭作用域的指令设置监控。这一行为会创建实时视图。
4.以上所有完成后,Angular启动完成
四.运行阶段
Angular提供了自己的事件循环。指令自身会注册事件监听器,因此当事件被触发时,指令函数就会运行在AngularJS的$digest循环中。$digest循环会等待$watch表达式列表,当检测到模型变化后,就会调用$watch函数,然后再次查看$watch列表以确保没有模型被改变。一旦$digest循环稳定下来,并且检测到没有潜在的变化了,执行过程就会离开Angular上下文并且通常会回到浏览器中。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
相关文章
Angularjs渲染的 using 指令的星级评分系统示例
本篇文章主要介绍了Angularjs渲染的 using 指令的星级评分系统示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-11-11angularJS利用ng-repeat遍历二维数组的实例代码
本篇文章主要介绍了angularJS利用ng-repeat遍历二维数组的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06AngularJS ng-controller 指令简单实例
本文主要介绍AngularJS ng-controller 指令,这里对ng-controller指令资料的整理,并附代码示例和效果图,有需要的朋友看下2016-08-08angular.js指令中transclude选项及ng-transclude指令详解
这篇文章主要研究一下如何使用ng-transclude指令,以及指令的transclude选项的相关资料,文中介绍的非常详细,并给出了完整的示例代码大家参考学习,需要的朋友们下面来一起看看吧。2017-05-05Angular通过angular-cli来搭建web前端项目的方法
这篇文章主要介绍了Angular通过angular-cli来搭建web前端项目的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
最新评论