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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
Javascript学习笔记4 Eval函数
Jan 11 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
如何调试异步加载页面里包含的js文件
Oct 30 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
Jan 21 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
element ui分页多选,翻页记忆的实例
Sep 03 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 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
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
国贸专业个人求职信分享
2013/12/04 职场文书
暑期研修感言
2014/02/17 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
工作证明英文模板
2014/10/21 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
平遥古城导游词
2015/02/03 职场文书