AngularJs bootstrap详解及示例代码


Posted in Javascript onSeptember 01, 2016

AngularJs学习笔记系列第一篇,希望我可以坚持写下去。本文内容主要来自 http://docs.angularjs.org/guide/ 文档的内容,但也加入些许自己的理解与尝试结果。

一、总括

本文用于解释Angular初始化的过程,以及如何在你有需要的时候对Angular进行手工初始化。

二、Angular <script> 标签

本例用于展示如何通过推荐的路径整合Angular,实现自动初始化。

<!doctype html>

 <html xmlns:ng="http://angularjs.org" ng-app>

 <body>

 ...

 <script src="angular.js">

 </body>

 </html>

将sciprt标签放置于页面底部。这样做能避免因为加载angular.js而阻挡HTML的加载,从而降低应用的加载时间。我们可以在http://code.angularjs.org中获取到最新版本的angularJs。出于安全考虑,切勿在产品中直接引用这个地址来加载脚本。但如果仅仅是研究学习使用的话,直接连接也无妨。

选择:angular-[version].js 是方便阅读的一个版本,适合日常开发、调试使用。

选择:angular-[version].min.js 是压缩、混淆后的版本,适合最终产品使用。

放置”ng-app”到应用的根节点中,如果你想让angular自动启动你的应用,通常可以放置于<html>标签中。

<html ng-app>

如果我们需要使用老派风格的directive语法”ng:”,那么我们需要加入一个xml-namespace到html标签中以“取悦”IE。(这个是一个历史原因,我们也不推荐使用ng:)

<html xmlns:ng="http://angularjs.org">

三、自动初始化

Angular会在DOMContentLoaded事件中自动初始化,Angular会找出由你通过ng-app这个directive指定的应用根节点。如果找到,Angular会做以下事情:

加载与module相关的directive。

创建应用相关的injector(依赖管理器)。

以ng-app指定根节点,开始对DOM进行相关“编译”工作。换言之,可以将页面的其中一部分(非<html>)作为根节点,从而限制angular的作用范围。

<!DOCTYPE HTML>
<html lang="zh-cn">
<head>
 <meta charset="UTF-8">
 <title>Bootstrap-auto</title>
 <style type="text/css">
  .ng-cloak {
   display: none;
  }
 </style>
</head>
<body>
 这里是ng-app外面的~~{{1+2}}
 <div ng-app class="ng-cloak">这里是ng-app里面~~~{{1+3*2}}</div>
 <script src="../angular-1.0.1.js" type="text/javascript"></script>
</body>
</html>

      注:里面的”ng-cloak”,这个是用于在angular.js编译完成之前(对!没错!是编译完成之前,不是angularjs加载完成之前。所以,如果想很好地避免这个情况,最好的办法是优化应用的加载流程,或者结合css对未编译的模版进行处理。而由于那万恶的ie6、7不支持属性选择器,所以最好使用class=”ng-cloak”的方式。编译完成后,这个class或属性会被删除。)隐藏模版,避免在页面显示原模版。

四、手工初始化

如果我们想进一步控制初始化进程(例如你需要通过script loader加载angular.js或者在angular编译页面前做一些操作),那么我们可以用一个手工调用的启动方法去代替。

以下例子等同于使用ng-app这个directive:

<!DOCTYPE HTML>
<html lang="zh-cn">
<head>
 <meta charset="UTF-8">
 <title>Bootstrap-manual</title>
 <style type="text/css">
  .ng-cloak {
   display: none;
  }
 </style>
</head>
<body>
 这里是ng-app外面的~~{{1+2}}
 <div id="rootOfApp" class="ng-cloak">这里是ng-app里面~~~{{1+3*2}}</div>
 <script src="../angular-1.0.1.js" type="text/javascript"></script>
 <script type="text/javascript">
  angular.element(document).ready(function() {
   angular.bootstrap(angular.element(document.getElementById("rootOfApp")));
  });
 </script>
</body>
</html>

就是说,我们的代码可以按照以下步骤编写:

1. 在页面和其他代码加载完成后,找到应用模版的根节点;

2. 调用angular.bootstrap,让angular去将模版编译为一个可执行的,双向绑定的应用!

 后续继续补充相关文章,谢谢大家对本站的支持!

              相关文章:

                                 AngularJs bootstrap搭载前台框架——js控制部分
                                
AngularJs bootstrap搭载前台框架——基础页面
                                 
AngularJs bootstrap搭载前台框架——准备工作
                                
AngularJs bootstrap详解及示例代码

Javascript 相关文章推荐
Jquery 常用方法经典总结
Jan 28 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 Javascript
JavaScript数组的一些奇葩行为
Jan 25 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
实例浅析js的this
Dec 11 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
AngularJs 延时器、计时器实例代码
Sep 16 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 Javascript
JavaScript数据类型学习笔记分享
Sep 01 #Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 #Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 #Javascript
在web中js实现类似excel的表格控件
Sep 01 #Javascript
Javascript点击按钮随机改变数字与其颜色
Sep 01 #Javascript
AngularJs 指令详解及示例代码
Sep 01 #Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 #Javascript
You might like
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
Python基于百度云文字识别API
2018/12/13 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
pytorch 模型可视化的例子
2019/08/17 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
How to spawning asynchronous work in J2EE
2016/08/29 面试题
装修五一活动策划案
2014/01/23 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python