📚 《精通 AngularJS》纸质实体书免费送啦!

本贴最后更新于 2627 天前,其中的信息可能已经物是人非

** 有需要该书的朋友请回帖沟通寄送方式,谢谢!**

精通 AngularJS

精通 AngularJS 精通 AngularJS

作者

  • Pawel Kozlowski
  • Peter Bacon Darwin

Pawel Kozlowski 有 15 年以上的 Web 开发经验,接触过多种 Web 技术、语言和平台。他精通客户端和服务器端编程,并始终在寻找能提高生产率的工具和流程。Pawel 是自由和开源软件的坚定支持者,他在 AngularJS 社区非常活跃,为 AngularJS 项目贡献了大量的代码。他也对 Angular UI (AngularJS 的配套框架)有所贡献,并为 AngularJS 提供了 Twitter Bootstrap 相关的指令(directives)。不写代码时,Pawel 常在会议与活动上为 AngularJS 布道。

Peter Bacon Darwin 已经积累了 20 年以上的编程经验,他在.NET 发布之前,就已经用它工作了。他还对 IronRuby 的开发有所贡献。他曾在 Avanade 和 IMGROUP 做 IT 顾问。退休后,自由开发和照顾孩子占用了他大部分的时光。Peter 是 AngularJS 社区的名人。他最近加入了 Google 的 AngularJS 团队。他还是 Angular UI 项目的创始成员。他曾在 Devoxx UK 和其他活动中发表过有关 AngularJS 的演讲,并开办过 AngularJS 的培训课程。他希望帮助企业更好地利用 AngularJS。

译者

  • 李路
  • 王永强
  • 马海波

内容简介

AngularJS 诞生于 Google,已用于开发多款 Google 产品。它是一套 JavaScript 前端框架,用于开发当下流行的以数据驱动的单页面 Web 应用。其核心特性是:MVC、模块化、自动双向数据绑定、语义化标签、依赖注入等。《精通 AngularJS》深入浅出地讲解了 AngularJS 的开发概念和原理,并通过丰富的开发实例向读者展示了构建复杂应用的完整过程,包括学习使用 AngularJS 特有的基于 DOM 的模板系统,实现复杂的后端通信,创建漂亮的表单,制作导航,使用依赖注入系统,提高 Web 应用的安全性,使用 Jasmine 开展单元测试,等等。

目录

序 1
第 1 章 Angular 之禅 7
11 邂逅 AngularJS 7
熟悉框架 8
参与 AngularJS 项目 8
社区 8
在线学习资源 9
库和扩展 9
工具 9
Batarang 10
Plunker 与 jsFiddle 10
IDE 扩展和插件 10
12 AngularJS 速成 10
Hello World——AngularJS 示例 10
双向数据绑定 12
AngularJS 中的 MVC 模式 12
鸟瞰 13
深入作用域 15
视图 21
模块与依赖注入 26
模块 26
协作对象 27
注册服务 29
模块的生命周期 33
模块依赖 35
13 AngularJS 和其他框架 38
jQuery 与 AngularJS 39
苹果与橙子 40
窥视未来 41
14 总结 41
第 2 章 构建与测试 43
21 介绍示例应用 44
熟悉问题领域 44
技术栈 45
持久化存储 46
MongoLab 46
服务器端环境 47
第三方 JavaScript 库 48
Bootstrap CSS 48
22 构建系统 48
构建系统准则 49
自动化所有事情 49
尽早报错,清晰报错 49
不同的工作流,不同的命令 50
构建脚本同样是代码 50
工具 50
Gruntjs 51
测试库与工具 51
Jasmine 51
Karma runner 52
23 组织文件和目录 52
根目录 52
进入源代码目录 54
AngularJS 的特定文件 54
轻装上路 56
深入测试目录 57
文件命名约定 57
24 AngularJS 模块和文件 57
一个文件,一个模块 58
模块内部 59
注册 provider 的不同语法 59
声明配置和运行块的语法 61
25 自动化测试 62
单元测试 63
剖析 Jasmine 测试 64
测试 AngularJS 对象 65
测试服务 65
测试控制器 67
Mock 对象和异步代码测试 68
端对端测试 70
日常工作流 71
Karma runner 的提示与技巧 72
执行测试子集 73
调试 73
26 小结 74
第 3 章 与后端服务器通信 75
31 使用 $http 进行 XHR 和 JSONP 请求 75
熟悉数据模型和 MongoLab URLs 76
$http API 快速导览 76
配置对象说明 77
转换请求数据 78
处理 HTTP 响应 79
转换响应数据 79
处理同源政策约束 79
利用 JSONP 克服同源政策约束 80
JSONP 的限制 81
利用 CORS 克服同源政策约束 81
服务器端代理 83
32 promise API 与 $q84
工作中的 promise 和 $q 服务 85
学习 $q 服务的基础知识 85
promise 是第一类 JavaScript 对象 87
聚合回调 88
注册回调和承诺的生命周期 88
异步动作的链式调用 89
关于 $q 的其他 91
AngularJS 中的 $q 集成 93
33 promise API 与 $http 94
34 与 RESTful 端点通信 95
$resource 服务 95
构造级与实例级方法 97
$resource 创建异步方法 100
$resource 服务的限制 101
使用 $http 自定义 REST 适配器 101
35 使用 $http 的高级特性 104
截取响应 104
36 测试与 $http 交互的代码 106
37 小结 108
第 4 章 显示与格式化数据 109
41 引用指令 109
42 显示表达式的求值结果 110
插值指令 110
利用 ngBind 渲染模型值 111
AngularJS 表达式中的 HTML 内容 111
43 条件化显示 112
根据条件包含内容块 114
44 用 ngRepeat 指令渲染集合 114
熟悉 ngRepeat 指令 115
特殊变量 115
迭代对象的属性 116
ngRepeat 模式 117
列表和细节 117
改动表格、行和类 119
45 DOM 事件处理器 120
46 基于 DOM 的模板 121
习惯烦琐的语法 121
ngRepeat 和多个 DOM 元素 122
不能在运行时修改的元素和属性 123
自定义 HTML 元素与 IE 的老版本 124
47 使用过滤器处理模型变换 124
内置过滤器 125
格式化过滤器 125
数组变换过滤器 125
编写自定义过滤器——分页示例 131
从 JavaScript 代码中访问过滤器 133
过滤器做什么与不做什么 134
过滤器与 DOM 操作 135
过滤器中代价高昂的数据变换 136
不稳定的过滤器 136
48 摘要 138
第 5 章 创建高级表单 139
51 AngularJS 表单与传统表单的比较 139
介绍 ngModel 指令 141
52 创建用户信息表单 142
53 理解输入指令 143
添加所需验证 143
使用基于文本的输入(text、textarea、e-mail、URL、number) 143
使用 checkbox 输入 144
使用 radio 输入 145
使用 select 输入 145
提供简单的字符串 options 145
利用 ngOptions 指令提供动态 options 146
select 指令与空的 options 148
理解 select 和对象判等 149
选择多个 options 150
运用传统的 HTML hidden input 字段 150
嵌入来自服务器的值 150
提交传统的 HTML 表单 151
54 详解 ngModel 数据绑定 151
理解 ngModelController 151
在模型与视图之间转换值 152
追踪值是否变化 152
跟踪 input 字段有效性 153
55 校验 AngularJS 表单 153
理解 ngFormController 153
运用 name 属性将表单附加到作用域上 154
为用户信息表单增加动态行为 154
显示验证错误 155
让保存按钮无效 156
使原生浏览器校验无效 157
56 在其他表单中嵌套表单 157
将子表单作为可重用组件 157
57 重复子表单 158
验证重复输入 159
58 处理传统的 HTML 表单提交 161
直接向服务器提交表单 161
处理表单提交事件 161
使用 ngSubmit 处理表单提交 162
使用 ngClick 处理表单提交 162
59 重置用户信息表单 162
510 摘要 164
第 6 章 导航 165
61 单页 Web 应用的 URL 166
HTML5 之前的 Hashbang URL 166
HTML5 和 history API 167
62 使用 $location 服务 168
理解 $location 服务 API 与 URL 的关系 169
哈希、页面内导航和 $anchorScroll 170
配置 HTML5 方式的 URL 171
客户端 171
服务端 171
使用 $location 导航 172
根据路由构建页面 173
路由映射 URL 174
定义路由时指定控制器 174
导航的不足 175
63 使用 AngularJS 自带的路由服务 175
基础路由定义 175
显示匹配的路由内容 176
匹配灵活的路由 177
定义默认路由 178
访问路由参数 178
多个控制器重用局部模板 178
路由改变时避免 UI 抖动 179
取消路由更新 181
64 $route 服务的局限 182
一个路由只对应页面中的一个区域 183
使用 ng-include 处理多个 UI 区域 183
不支持嵌套路由 184
65 路由相关的模式及技巧 185
处理链接 185
创建可点击的链接 186
兼容 HTML5 及 hashbang 模式 186
链接外部页面 187
组织路由定义 187
将路由定义分离到多个模块 188
减少路由定义的重复代码 188
66 总结 189
第 7 章 安全 191
71 提供服务端认证和授权 192
处理未授权的访问 192
提供服务端验证 API 192
72 保护局部模板 193
73 阻止恶意攻击 194
防止 cookie 监听、中间人攻击 194
防止跨站脚本攻击 195
确保 AngularJS 表达式内 HTML 内容的安全性 195
允许不安全的 HTML 绑定 196
净化 HTML 196
防止 JSON 注入攻击 197
防止跨站请求伪造 198
74 客户端安全 198
创建 security 服务 199
显示登录表单 200
创建安全的菜单及工具栏 201
隐藏菜单项 201
创建登录工具栏 202
75 支持客户端认证 203
处理认证失败 203
拦截响应 204
HTTP 响应拦截器 204
创建 securityInterceptor 服务 205
创建 securityRetryQueue 服务 207
通知安全服务 208
76 防止导航到安全受限路由 208
使用路由 resolve 函数 209
创建授权服务 210
77 总结 212
第 8 章 创建自定义指令 213
81 什么是 AngularJS 指令 214
理解内置指令 214
在 HTML 标签中使用指令 215
82 指令的编译生命周期 215
83 为指令编写单元测试 217
84 定义指令 218
85 使用指令修改按钮样式 219
编写一个按钮指令 220
86 理解 AngularJS 的组件指令 222
编写一个分页指令 222
为分页指令编写单元测试代码 223
在指令中使用 HTML 模板 224
从父作用域中隔离指令 225
使用 @ 插入属性 226
使用=绑定数据 227
使用&提供一个回调表达式 227
实现分页组件 228
为指令添加分页跳转回调 229
87 创建一个自定义验证指令 230
需要其他指令的控制器 231
可选的依赖控制器 231
查找祖先元素的控制器 232
使用 ngModelController 232
编写自定义验证指令的单元测试 233
实现自定义验证指令 235
88 创建一个异步模型验证器 235
模拟用户服务 236
为异步验证编写测试代码 237
实现异步验证指令 238
89 包装 jQueryUIdatepicker 指令 239
为包装组件指令编写测试代码 240
实现 jQuery datepicker 指令 242
810 小结 243
第 9 章 创建自定义指令 245
91 使用嵌入 245
在指令中使用嵌入 245
在独立作用域指令中使用嵌入 246
创建一个使用嵌入的提示指令 246
理解指令定义中的 replace 属性 247
理解指令定义中的 transclude 属性 248
使用 ng-transclude 插入嵌入元素 248
理解嵌入作用域 248
92 创建和使用嵌入函数 250
使用 $compile 服务创建一个嵌入函数 251
在嵌入时克隆原始元素 251
在指令中访问嵌入函数 252
通过编译函数中的 transcludeFn 来获取嵌入函数 252
通过 $transclude 在指令控制器中获取嵌入函数 253
使用嵌入创建一个 if 指令 253
在指令中使用 priority 属性 255
93 理解指令控制器 256
为指令控制器注入特殊依赖 257
创建一个基于控制器的分页指令 258
理解指令控制器和链接函数的区别 258
注入依赖 259
编译过程 259
获取其他控制器 260
获取嵌入函数 261
创建一个手风琴指令套件 261
在手风琴组件中使用指令控制器 262
实现 accordion 指令 263
实现 accordion-group 指令 263
94 控制编译过程 265
创建一个 field 指令 265
在指令中使用 terminal 属性 267
使用 $interpolate 服务 268
绑定验证信息 269
动态加载模板 269
设置 field 指令的模板 270
95 小结 271
第 10 章 创建为全球用户服务的 AngularJS 应用 273
101 使用本地化的符号和设置 274
配置本地化设置模块 274
使用已有的本地化设置 275
本地化设置和 AngularJS 过滤器 275
102 处理翻译 277
翻译 AngularJS 模板中的字符串 277
使用过滤器 278
使用指令 279
翻译 JavaScript 代码中的字符串 280
103 范式、秘诀和技巧 282
按照设定的地区初始化应用 282
将地区标识作为 URL 一部分带来的问题 283
切换地区 284
针对日期、数字和货币的自定义过滤器 285
104 小结 287
第 11 章 开发健壮的 AngularJS 应用 289
111 理解 AngularJS 的内部运作机制 290
AngularJS 不是基于字符串的模板引擎 290
响应 DOM 事件更新模型 291
将模型变化传播给 DOM 291
同步 DOM 和模型变化 292
Scope$apply——打开 AngularJS 世界的钥匙 293
深入 $digest 循环 295
整合 300
112 性能优化——设置期望值、测量、调节、并重复 301
113 AngularJS 应用的性能优化 303
优化 CPU 使用率 303
加速 $digest 循环 303
尽可能少进入 $digest 循环 310
限制每个 $digest 循环的执行轮数 312
优化内存占用 312
尽可能避免深度监视 312
注意监视表达式的大小 314
ng-repeat 指令 314
ng-repeat 指令中对集合的监视 314
瞬间绑定大量监视 315
114 小结 315
第 12 章 打包和部署 AngularJS Web 应用 317
121 提升网络相关的性能 318
压缩静态资源 318
AngularJS 如何判断依赖关系 318
编写会被安全压缩的 JavaScript 代码 319
数组风格依赖注入的缺陷 322
模板预加载 323
使用

  • 书单

    『书单』是 [黑客派] 社区的纸质书共享计划第一版,目前已经下线。其升级版『链书』基于区块链的技术,实现去中心化的货币 + 去中心化的图书馆,已于 2018 年 6 上线。

    77 引用 • 638 回帖 • 492 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 409 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    710 引用 • 1173 回帖 • 193 关注
  • 前端开发
    4 引用 • 62 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...