精通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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。

-->

时间: 2024-11-04 08:27:10

精通AngularJS 读书笔记(2)的相关文章

【精通css读书笔记】 第八章 布局

学习了css布局的基础后又来翻阅<精通css>这本经典书籍,对布局有了进一步的认识. 基于浮动的布局 两列的布局仍然是使用一个元素向左浮动,一个元素向右浮动,值得注意的是要加入display:inline 用来防止IE中的双外边距浮动产生的bug. 三列布局与昨天的使用了不同的方法,全部依靠浮动来实现,与两列布局一样先实现主内容与次内容的左右浮动,然后对主内容中的主div与次div在分别浮动. 不要忘记因为元素的浮动需要对父元素清理浮动的处理 overflow:hidden 但是三列布局的时候

精通css读书笔记

1.伪类的顺序:link->visited->hover(focus)->active. 2.选择器的特殊性:a.行内样式; b.id选择器; c.类.伪类.属性选择器(例:class属性); d.类型选择器和伪元素选择器的数量(例:p标签).abcd越大,优先级越高. 3.相对定位占据原来的空间,绝对定位与固定定位不占据原来的空间. 4.清除浮动的方式: a.<div class="class"></div> .clear{clear:bot

【java读书笔记】JSTL,快速精通

JSTL并不是什么新颖的技术而且很简单,甚至有人认为JSTL已经过时了.但是我认为它既然存在,就有存在的道理,作为技术人员就应该知道它们是什么,怎么使用,有什么优点. JSTL包含两部分:标签库和EL语言.下面先介绍标签库,再介绍EL语言,最后总结一下JSTL的优点. JSTL JSTL简介 JSTL(JavaServer Page Standard Tag Library,即:JSP标准标签库),是由SUN公司提供的简化JSP页面设计的标签.JSTL是由Core(核心库).Format(格式化

《精通CSS》读书笔记(一)

最近新添16本书,目前开始看陈剑瓯翻译的<精通CSS——高级Web标准解决方案>(Andy Budd, CSS Mastery -- Advanced Web Standards Solutions). 以下是读书笔记. 首先,挺遗憾的是,除了封面上译者名字外,就完全看不到跟译者有关的东西,没有译者简介,没有译者序,没有后记……一点也没有(难道是我没找到?) 第1章 关于“有意义的标签”,这是css编程的前提.第4页上只是罗列了一些html标签,但是并没有详述他们的意义和用法.当然这是一本cs

C#刨根究底:《你必须知道的.NET》读书笔记系列

一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP-王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心得和感悟,将技术问题以生动易懂的语言展开,层层深入,以例说理.全书主要,包括了.NET基础知识及其深度分析,以.NET Framework和CLR研究为核心展开.NET本质论述,涵盖了.NET基本知识几乎所有的重点内容.全书分为5个部分,第1部分讲述.NET与面向对象,从底层实现角度分析了.NET如何实现面向

精通javasCRIPT-学习笔记 Features,Functions,Object

关于学习javasCRIPT的书,市面上太多了,有犀牛书,红宝书,但是他们都类似于一本书,包含js的一切,并没有站在一个高度上,看js的本质,我计划看一看jquery作者resig写的<精通javascript>第二版,顺便做个读书笔记. 第2章:Features,Functions,Object - Reference and Value 传参引和传值,两种方式,在很多语言中都有,但是要注意的一点是:js中 reference就是指向的 对象,不能指向 另一个reference.即:js中,

我编程,我快乐——读书笔记(一)

我编程,我快乐--读书笔记 程序员职业规划之道 程序员生存.成功.制胜的法则 源自IT精英的职业发展秘诀 热爱工作,享受生活 前言 1. 每个人都有卓越之处,但需要找到自己真正喜欢的事情,并把它激发出来. 2. 我认为从事卓越的职业是拥有有意义人生的起点.你不仅成为了一名更优秀更具价值的员工,更成为了一个更有价值的人. 3. 一个成年人大部分的清醒时间都在工作中度过,那么热爱工作就是热爱生活. 4. 我们工作最终的目标是追求快乐.如果你把目光放远一些,你就会发现自己为了追求更高的薪水,或许就会失

读书笔记:计算机网络8章:应用层

最近一个问题很困扰我,今天则得到了答案,也意味着我该选择了. 不知道大家有没有遇到过这样的情况,我是上年刚毕业,大四时进行过java培训,12年9月-13年4月,在这之前已经自学过java.7月份时进入一家公司工作,今年3月份辞职,4月份找到工作,来上班了.一开始就不太喜欢公司氛围,前台,hr,态度什么的都不太好,工作环境也极像客服部,整天电话不断,讨论声不断,第一个星期真是煎熬,去了两三天之后有辞职的想法,但是后面想想还是算了,公司待遇还可以. 但是进入到公司后leader让学PHP,学PHP

《精通正则表达式》笔记 --- 选择引号内的文字

这个例子出自<精通正则表达式>,做一下笔记帮助理解和记忆. 第一版 最简单的case就是考虑包含一对引号,那么写出来的表达式应该是这样的: ".*" 但是这个未免太简单了吧,会有啥问题呢?假如输入的字符串长这样结果就会出问题拉.see... Input String: "Hello" and "World" Regex: ".*" Match: "Hello" and "World&q