精通AngularJS 读书笔记(2)
AngularJS 速成
视图
因为AngularJS 依靠浏览器去解析模板,所以要保证模板是有效的HTML。尤其要小心闭合号HTML标签(未闭合好的标签不会产生任何错误信息,但会让视图不能正确渲染)。AngularJS 在有效的DOM树下才能好好工作。
AngularJS 扩展了HTML的词汇库(增加新的属性或HTML元素,并告知浏览器如何解释它们),这类似于创造了一门基于HTML的领域特定语言(domain-specific language, DSL),并指导浏览器如何理解它。因此,常听到AngularJS “教浏览器新把戏”的说法。
AngularJS 提倡声明式UI结构。在实践中,这意味着模板专注于描述所需要的效果,而非其实现。
模块与依赖注入
AngularJS 为自己定义了全局命名空间angular,它提供多种功能及不少便利函数,module就是其中之一。module为AngularJS 管理的对象(控制器、服务等)扮演容器的角色。
定义新的模块,需要传入名字,作为调用module的第一个参数,而第二个参数则表达此模块依赖其他哪些模块。
模块定义好了,要告知AngularJS 它的存在,这只要为ng-app属性赋值即可。
<!--接下来的内容,其实我没读懂,先简略记录一下吧 -->
协作对象
AngularJS 用模块组织对象。在模块上可以注册的对象,不仅限于AngularJS 对象(控制器、过滤器等),还包括开发者自定义的任何对象。
模块模式在组织代码方面非常有用,但是,AngularJS 走得更远一些。除了在模块中注册对象外,它还可以声明这些对象的相互依赖关系。
如前所述,$scope对象神秘地注入了控制器中。实际上,这是因为控制器声明了它需要$scope,所以AngularJS 才会创建并注入它。这套依赖管理系统可以这样总结:“为了正常工作,我需要一个依赖(协作对象):我不知道它从哪儿来,也不知道它如何创建。我只知道我需要它,所以请为我提供它。”
注册服务
AngularJS 只连接其认识的对象。因此,接入依赖注入机制的第一步,是将对象注册在模块上。我们不直接注册对象的实例,而是将对象创建的方案抛给依赖注入系统,然后AngularJS 解释这些方案以初始化对象,并在之后连接它们,最后成为可运行的应用。
AngularJS 的$provide服务可以注册不同的对象创建方案。之后$injector服务会解释这些方案,生成完备而可用的对象实例(已经解决好所有的依赖关系)。
可以用service方法注册构造函数,也可以用factory方法,它比service更加灵活。
以上描述过的所有注册方法,都是最通用方法provider的特殊类型。
模块的生命周期
AngularJS支持多种对象创建方案,provider是其中的通用方法,它在创建对象实例前可以对其进行配置。为了支持provider,AngularJS 将模块的生命周期分为两个阶段:
- 配置阶段:收集对象创建方案,并进行配置。
- 运行阶段:执行所有初始化后的逻辑
AngularJS应用中的服务是不能重名的,父模块中的服务会覆盖子模块中的同名服务。
<!--
作者:纤锐
出处:http://www.cnblogs.com/beginner2014/p/5169150.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。
-->
精通AngularJS 读书笔记(2)的更多相关文章
- 精通AngularJS 读书笔记(1)
邂逅AngularJS AngularJS是采用JavaScript语言编写的客户端MVC框架,帮助开发者编写现代化的单页面应用.尤其适合编写有大量CURD操作的,具有AJAX风格的富客户端应用. 使 ...
- Mastering Web Application Development with AngularJS 读书笔记-前记
学习AngularJS的笔记,这个是英文版的,有些地方翻译的很随意,做的笔记不是很详细,用来自勉.觉得写下来要比看能理解的更深入点.有理解不对的地方还请前辈们纠正! 一.关于<Mastering ...
- Mastering Web Application Development with AngularJS 读书笔记(三)
第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- Mastering Web Application Development with AngularJS 读书笔记(一)
第一章笔记 (一) 一.PS:运行时配置IIS <html> <head> <script src="angular.js"></scri ...
- 《html5 从入门到精通》读书笔记(二)
接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...
- 《html5 从入门到精通》读书笔记(一)
今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...
- 【精通css读书笔记】 第八章 布局
学习了css布局的基础后又来翻阅<精通css>这本经典书籍,对布局有了进一步的认识. 基于浮动的布局 两列的布局仍然是使用一个元素向左浮动,一个元素向右浮动,值得注意的是要加入displa ...
- 《Linux.Shell编程从入门到精通》读书笔记
第一章 第一个Shell程序 以 #!解析器名称 开头,表示选择哪个解释器解释shell脚本 source命令 export命令 env命令 unset命令 第二章 shell编程基础 函数传递 标准 ...
随机推荐
- Quartz作业调度框架及时间表达式的含义和语法
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本 ...
- python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)
1.tiim模块,因为方法较多我就写在code里面了,后面有注释 #!/usr/bin/env python #_*_coding:utf-8_*_ print("time".ce ...
- C++ 从一组数据中按概率选择一个
#include <stdio.h> #include <stdint.h> #include <ctime> #include <vector> #i ...
- 读懂UI设计的心理学
好文转载,版权归原作者 作为UI设计师,对待用户就像对待婴儿,知道如何通过界面设计诱导用户非常重要,这就需要了解心理学方面的知识了.今天分享一篇日本设计师的好文,结合心理学与设计,教你读懂心理学,提高 ...
- Method Swizzling
学习博客: http://www.cocoachina.com/ios/20160121/15076.html (这个作者太牛了,写了我一直想知道的类簇的swizz方法) 一. 一般的swizz 先给 ...
- 编写bat(批处理文件)的优势
以前编写java小程序打成jar包运行的时候非常麻烦,在dos环境先cd进入那个文件夹,再运行java -jar *.jar,自从看了bat以后,发现.bat真的是dos下面运行的好帮手. @echo ...
- wp8.1 VS2013部署手机发生 DEP6100 6200错误
wp8.1 VS2013部署手机发生 DEP6100 6200错误 ,提示未发现手机. 可能是数据线有问题 建议更换 本人的电脑有很多次,提示DEP6100 6200错误,每一次都需要重做系统.. 然 ...
- Android 基于Android的手机邮件收发(JavaMail)之一(准备工作)
界面一共是五个界面,分别是welcomeActivity,ReceiveAndSendActivity,ReceiveListActivity,SendMailActivity,MailDetails ...
- java8 学习系列--NIO学习笔记
近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ...
- Spring操作指南-AOP基本示例(基于XML)