AngularJS的初始化
AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化。
Angular <script> Tag
下面通过一小段代码来介绍推荐的自动初始化过程:

<!doctype html>
<html xmlns:ng="http://angularjs.org" ng-app>
<body>
...
<script src="angular.js">
</body>
</html>

- 把script标签放在页面的底部可以缩短应用加载的时间,因为这样的话Html的加载不会被angular.js脚本的加载阻塞。
- angular-[version].js是具有可读性的版本,适用于开发和调试。
- angular-[version].min.js是压缩和混淆后的版本,适用于产品代码。
- 如果你想让angular自动初始化的话,可以在<html>标签中加上ng-app
<html ng-app>
…
</html> - 如果要支持IE7的话需要加上id="ng-app"
<html id="ng-app" ng-app>
…
</html> - 如果要使用旧版的指令语法(ng:)的话,要支持IE还需要在<html>标签中引入xml的命名空间(因为一些历史原因,现在已经不推荐使用ng:的语法了)
<html xmlns:ng="http://angularjs.org">
…
</html>
自动初始化(Automatic Initialization)
在DOMContentLoaded事件触发时Angular会执行自动初始化过程。这时,Angular会查找ng-app指令,并用它来标明整个应用的根作用域。如果找到了ng-app指令,Angular会做一下几件事:
- 加载和指令(directive)内容相关的模块(module)
- 创建一个应用“注入器”(injector)
- 将含有ng-app指令的节点作为根节点来编译DOM。这样一来,你可以只指定一部分DOM作为Angular应用。
手动初始化(Manual Initialization)
如果你想更多的来控制初始化的过程,你可以手动的执行引导程序。比如你需要用到脚本加载器(script loader)或者要在Angular编译页面之前加入一些操作的话,你就需要手动的调用Angular的初始化方法了。例如:

<!doctype html>
<html xmlns:ng="http://angularjs.org”>
<body>
Hello{{'World'}}!
<script src="http://code.angularjs.org/angular.js"></script>
<script>
angular.element(document).ready(function(){
angular.module('myApp',[]);
angular.bootstrap(document,['myApp']);
});
</script>
</body>
</html>

注意:angular.bootstrap函数签名如下:
| 参数 | 类型 | 说明 |
| element | Element | 作为Angular应用根作用域的DOM元素 |
| modules (optional) |
Array<String|Function|Array> | 数组中为所有需要加载的模块的的名称,每个模块的名字需要在此之前定义,Angular不会在运行到这里时自己去定义模块。 |
如果手动调用初始化函数的话,代码的书写需要遵循以下顺序:
- 等到页面加载完成后,找到AngularJS的根元素(通常是文档的根元素)。
- 调用angular.bootstrap函数将模板编译成可以执行的、数据双向绑定的应用程序。
延迟引导(Deferred Bootstrap)
这个特性使得像Batarang这样的工具和一些test runner能够在Angular的引导过程中建立钩子,在注册需要注入的依赖的时候可以增加或者替换注入的service,或者mock一些比较重的依赖。当angular.bootstrap被调用时如果window.name中包含前缀NG_DEFER_BOOTSTRAP!,引导过程将会被暂停直到angular.resumeBootstrap()被调用。angular.resumeBootstrap()可以传入一个可选的模块数组作为参数,这个数组中的模块会被加到引导函数的模块数组中一起被初始化。
=============Angular JS学习笔记系列=============
- AngularJS学习笔记1——什么是AngularJS?
- AngularJS学习笔记2——AngularJS的初始化
=========================================
作者:make dream
AngularJS的初始化的更多相关文章
- AngularJS学习笔记2——AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过程: <!doctyp ...
- 04、AngularJS的ng-bind、多个控制器和apply
这篇,讲一下angularjs的ng-bind指令,多个控制器,以及手动触发angularjs的脏检查,我直接把代码贴,顺着代码讲. <!DOCTYPE html> <html> ...
- AngularJS 源码分析1
AngularJS简介 angularjs 是google出品的一款MVVM前端框架,包含一个精简的类jquery库,创新的开发了以指令的方式来组件化前端开发,可以去它的官网看看,请戳这里 再贴上一个 ...
- 理解angularjs的作用域
<!doctype html> <html ng-app="myApp"> <head> <script src="http:/ ...
- AngularJS快速入门指南04:指令
AngularJS通过指令将HTML属性进行了扩展. AngularJS指令 AngularJS指令是带有ng-前缀的扩展HTML属性. ng-app指令用来初始化AngularJS applicat ...
- AngularJS开发指南1:AngularJS简介
什么是 AngularJS? AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于, ...
- AngularJS + ui-router + RequireJS异步加载注册controller/directive/filter/service
一般情况下我们会将项目所用到的controller/directive/filter/sercive预先加载完再初始化AngularJS模块,但是当项目比较复杂的情况下,应该是打开对应的界面才加载对应 ...
- AngularJS.directive系列:嵌套directive的通讯及scope研究
一.directive中的scope directive无疑是AngularJS中比较复杂难懂的部分,而directive中个scope更是其中最复杂的部分了,尤其是在嵌套directive中互相通讯 ...
- AngularJS.js: 杂项
ylbtech-AngularJS.js: 杂项 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多 ...
随机推荐
- 无废话WCF入门教程四[WCF的配置文件]
一.概述 配置也是WCF编程中的主要组成部分.在以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址.服务用于 ...
- linux_redhat_线程后台运行方法
建议看完1:后直接看2 screen 方式熟练些可靠. 次方法适用于redhat系统,unbunt* 系统用screen 命令 产看系统版本 cat /proc/version 首先项目制作的sh文件 ...
- Log4j2 简明教程
一.概述 log4j2官方文档内容非常多,要一次性了解全部是不可能的.正确的步骤应当是先了解最常见的配置,当发现原有知识无法解决问题,再重新查看文档看有没有合适的配置.下面将从文件结构入手,再到简单的 ...
- 【转】传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明
原文地址:http://blog.csdn.net/zhubaitian/article/details/39431307 Desired Capabilities是由客户端发送给Appium服务器端 ...
- SVN & Git (一)
(一)SVN的使用.CornerStone图形化管理工具! SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. ...
- MVC 验证码
验证码类 public class VerifyCode { public string checkCode = String.Empty; public byte[] BuildImg() { in ...
- javascript通过数日两个日期之间的比较分离
$(function () { var starttime = transdate("2014-09-30 15:53:00"); var endtime = transdat ...
- 用bat启动sqlserver服务
声明下这个脚本不是我写的,忘了是从哪看到的了,在此分享给大家,因为在我的理解中技术就是用来分享的,,希望原创作者看到了不要介意. 1.创建个文本,将后缀名改成.bat 2.将下边语句粘贴进去,然后保存 ...
- 使用 COM 风格的编程接口
使用COM 风格的编程接口 假设不直接使用 COM 库.不创建自己的包装.那么更可能的是使用 COM 风格的编程接口.这是由于如今很多开发商公布应用程序时.提供了首选的互操作程序集(Primary I ...
- 认识TDD
初步认识TDD TDD,测试驱动开发(Test Driven Development)是极限编程中倡导的程序开发方法,以其倡导先写测试程序,然后编码实现其功能得名.本文将对TDD有一个较为系统的认识. ...