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)的更多相关文章

  1. 精通AngularJS 读书笔记(1)

    邂逅AngularJS AngularJS是采用JavaScript语言编写的客户端MVC框架,帮助开发者编写现代化的单页面应用.尤其适合编写有大量CURD操作的,具有AJAX风格的富客户端应用. 使 ...

  2. Mastering Web Application Development with AngularJS 读书笔记-前记

    学习AngularJS的笔记,这个是英文版的,有些地方翻译的很随意,做的笔记不是很详细,用来自勉.觉得写下来要比看能理解的更深入点.有理解不对的地方还请前辈们纠正! 一.关于<Mastering ...

  3. Mastering Web Application Development with AngularJS 读书笔记(三)

    第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...

  4. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  5. Mastering Web Application Development with AngularJS 读书笔记(一)

    第一章笔记 (一) 一.PS:运行时配置IIS <html> <head> <script src="angular.js"></scri ...

  6. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  7. 《html5 从入门到精通》读书笔记(一)

    今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...

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

    学习了css布局的基础后又来翻阅<精通css>这本经典书籍,对布局有了进一步的认识. 基于浮动的布局 两列的布局仍然是使用一个元素向左浮动,一个元素向右浮动,值得注意的是要加入displa ...

  9. 《Linux.Shell编程从入门到精通》读书笔记

    第一章 第一个Shell程序 以 #!解析器名称 开头,表示选择哪个解释器解释shell脚本 source命令 export命令 env命令 unset命令 第二章 shell编程基础 函数传递 标准 ...

随机推荐

  1. Flink – Trigger,Evictor

    org.apache.flink.streaming.api.windowing.triggers;   Trigger public abstract class Trigger<T, W e ...

  2. java 字符流与字节流互转

    package test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOE ...

  3. Java 枚举7常见种用法

    DK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量 在JDK1.5 之前,我们定义常量都是:  ...

  4. Swift利用协议优化NSNotificationCenter

    NSNotificationCenter存在的问题 通知没有统一的命名格式 对于通知的命名没有强制的要求,一个项目里可能有多种不同的命名规则.比如: 1 2 3 4 5 6 class Barista ...

  5. TypeScript 自动编译

    安装Typescript npm install -g typescript 手动编译 tsc greeter.ts 自动编译 tsc -w greeter.ts

  6. Source Insight 3.X utf8支持插件震撼发布

    继上次SI多标签插件之后,因为公司内部编码改为utf8编码,因此特意做了这个Source Insight 3.X utf8插件. 下载地址:[点我] 安装说明: 解压msimg32.dll sihoo ...

  7. 代码阅读分析工具Understand 2.0试用

    Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...

  8. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  9. centos7 使用systemd 自定义关机前脚本

    systemd (centos7) 需求,关机前执行脚本 关机脚本vi /usr/bin/shutdown_cust.sh#!/bin/bashecho "zhengchangguanji& ...

  10. 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

    今天,在.net4.5,mvc4下新建了个区域,运行起来就报这个错误: 命名空间"System.Web"中不存在类型或命名空间名称"Optimization"( ...