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 相关文章推荐
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
Bootstrap表格制作代码
Mar 17 Javascript
Angular中ng-bind和ng-model的区别实例详解
Apr 10 Javascript
基于angular实现模拟微信小程序swiper组件
Jun 11 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 Javascript
Node 模块原理与用法详解
May 13 Javascript
vue和小程序项目中使用iconfont的方法
May 19 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代码
2010/02/16 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
vue项目实战总结篇
2018/02/11 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
Python科学计算之NumPy入门教程
2017/01/15 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
详解【python】str与json类型转换
2019/04/29 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
python入门之井字棋小游戏
2020/03/05 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python map比for循环快在哪
2020/09/21 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
函授毕业自我鉴定
2014/02/04 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
Python机器学习之决策树和随机森林
2021/07/15 Javascript
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers