我们都知道AngularJS默认会执行app.js来启动整个angular项目,但你知道angular具体执行过程吗?

一、自动引导启动框架

例如我们有如下代码,我们想要完成一个指令功能:

<html ng-app>
<head>
<script src="angular.min.js"></script>
</head>
<body>
<div my-directive></div>
</body>
</html>

下面分析一下Angular具体启动引导的过程:

第一步:加载angular.min.js文件,通过全局变量angular提供API接口;

第二步:等待直到DOM树加载完毕;

第三步:找到ng-app,自动进入启动引导阶段;

第四步:找到 my-directive,根据指令的定义展开。

另外,何时使用ng-app=“myapp”,何时直接使用ng-app?

如果使用ng-app,你的controller只能这么写:

function MyController($scope){
//do something...
}

而你使用ng-app="myapp"你可以这么写:

var myapp = angular.module('myapp',[]);
myapp.controller('MyControler',function($scope){
//do something...
});

二、手动引导启动框架

在大多数情况下,我们都使用ng-app指令来进行自动引导启动,但是如果一个HTML文件中 有多个ng-app,AngularJS只会自动引导启动它找到的第一个ng-app应用,这是需要手工引导 的一个应用场景。

我们可以利用 angular.bootstrap() 方法进行手动引导:

angular.bootstrap(element, [modules], [config]);

bootstrap方法有三个参数:

element : 一个DOM元素,以这个元素为Angular应用的根,等同自动引导时ng-app所在 的元素。这个参数是必须的。比如:document、document.body等。modules : 引导时需要载入的模块数组。比如:[]、["myapp"]等。由于我们的HTML中引用 了myapp模块中定义的my-directive指令,所以,我们需要指定载入myapp模块。config :引导配置项,可选。我们先忽略。 最终,我们使用如下的形式进行手动引导:

angular.bootstrap(document,["myapp"]);

比如如下的例子:

<script src="angular.min.js"></script>
<script>
var myapp1mod = angular.module('Lilei',[]);
myapp1mod.controller('Textcontroller',function($scope){
var content= {};
content.message = "Hello Lilei";
$scope.content= content;
}); var myapp2mod = angular.module('Hanmeimei',[]);
myapp2mod.controller('Textcontroller',function($scope){
var content= {};
content.message = "Hello Hanmeimei";
$scope.content= content;
}); angular.bootstrap(angular.element("#Lilei"),["Lilei"]);
angular.bootstrap(angular.element("#Hanmeimei"),["Hanmeimei"]); </script>

浅谈AngularJS启动引导过程的更多相关文章

  1. AngularJS的启动引导过程

    原文:http://www.angularjs.cn/A137?utm_source=ourjs.com 目录: 引导之前 自动引导启动框架 手工引导启动框架 引导第1步:创建注入器 引导第2步:创建 ...

  2. AngularJS 启动执行过程

    一.浏览器下载HTML/CSS/JavaScript等 当你转到一个页面地址后,浏览器先回下载这个HTML,同时,会开启一些辅助线程下载所关联的script标签和link标签里引用的文件. 二.浏览器 ...

  3. Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  4. (六)Angularjs - 启动引导

    自动引导 AngularJs 通过 ng-app 指令进行自动引导 手工引导启动框架 如果一个HTML文件中 有多个ng-app,AngularJS只会自动引导启动它找到的第一个ng-app应用,这是 ...

  5. 浅谈AngularJS中的指令和指令间的相互通信

    说到AngularJS,我们首先想到的大概也就是双向数据绑定和指令系统了,这两者也是AngularJS中最为吸引人的地方.双向数据绑定呢,感觉没什么好说的,那么今天我们就来简单的讨论下AngularJ ...

  6. 浅谈angularJS指令的属性

    restrict – 这个属性用来指定指令在HTML中如何使用(指令的四种表示方式).我们使用 ‘AE’,这个指令可以被当作新的HTML元素或者属性来使用.如果要允许指令被当作class来使用,我们将 ...

  7. 浅谈AngularJS中的$parse和$eval

    AngularJS的初学者常常会对$parse和$eval两个内建服务感到有些困惑,今天我们就来说说AngularJS中的$parse和$eval. 总的来说,$parse和$eval都是作用于Ang ...

  8. 浅谈 JavaScript new 执行过程及function原理

    前言 最近在学习JavaScript语言精粹,感觉写得相当不错.所以这里也算是总结一下.一个方法使用new的方式创建到底是怎样的过程,一个function的声明内部又是怎样执行的呢 另外学的过程中,不 ...

  9. 浅谈AngularJS的$parse服务

    $parse 作用:将一个AngularJS表达式转换成一个函数 Usage$parse(expression) arguments expression:需要被编译的AngularJS语句 retu ...

随机推荐

  1. im2uint8函数分析

    环境:Win7 64位 + Matlab R2010a 本次分析的函数为im2uint8,这个函数在图像处理中要用到,主要把图像数据类转换到uint8 uint8函数有效的输入的图像数据类为:logi ...

  2. 关于PS里图层样式的全局光

    勾选“使用全局光”,则各个图层样式的光源角度都会相同. 我在“内阴影”效果里勾选了“使用全局光”,然后我发现当我在“投影”效果和“斜面和浮雕”效果里选择使用全局光时,它们的光源角度自动变成120度, ...

  3. ThinkPhp调用webservice

    模板页: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  4. html css 笔记

    cursor其他取值 鼠标移入    auto          :标准光标    default        :标准箭头    pointer        :手形光标    wait       ...

  5. javascript之Arguments

    一.Arguments.callee //获取当前正在执行的函数,也就是这个函数自身,常用于获取匿名函数自身 语法:arguments.callee var factorial = function ...

  6. WPF笔记(1.2 Navigation导航)——Hello,WPF!

    原文:WPF笔记(1.2 Navigation导航)--Hello,WPF! 这一节是讲导航的.看了一遍,发现多不能实现,因为版本更新了,所以很多旧的语法不支持了,比如说,不再有NavigationA ...

  7. spring3.0事务的配置

    第一种配置方法:基于XML的事务管理 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpd ...

  8. cf479A Expression

    A. Expression time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  9. MongoDb C/java driver

    1,在linux下安装客户端连接windows下 的MongoDBServer.

  10. Strurts(四)——从Struts原型模拟看大道至简(含实例下载)

    首先,需要再次声明的是:struts是web层的框架.在介绍struts的第一篇文章就已经有了论述,如果不使用struts框架同样可以进行开发,但是需要在Servlet里面写大量的“if……else… ...