新書推薦:
《
有趣的中国古建筑
》
售價:HK$
67.0
《
十一年夏至
》
售價:HK$
76.2
《
如何打造成功的商业赛事
》
售價:HK$
89.5
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:HK$
58.2
《
慈悲与玫瑰
》
售價:HK$
87.4
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:HK$
76.2
《
云中记
》
售價:HK$
76.2
《
大模型应用开发:RAG入门与实战
》
售價:HK$
89.4
|
編輯推薦: |
本书分为三部分。第Ⅰ部分讲解 Angular 开发的基础知识,对 HTML、CSS、JavaScript 和TypeScript 也进行了介绍,确保对前端开发一无所知的读者,也能够快速上手。本部分*后还开发了一个简单的 Web 应用程序,帮助读者巩固基础知识。第Ⅱ部分详细讲解 Angular,内容涵盖项目结构、开发工具、数据绑定、各种指令、事件和表单、管道、服务、服务提供程序、模块等。
这部分是大全式讲解,对 Angular 的主要功能都进行了介绍。第Ⅲ部分更偏向较高级的功能,介绍了 Reactive Extensions、HTTP 请求、路由、动画和单元测试。
|
內容簡介: |
主要内容
● 从架构的角度理解MVC模式
● 使用Angular创建丰富、动态的Web应用程序客户端
● 使用ng工具构建Angular项目
● 扩展和自定义Angular
● 如何对Angular项目进行单元测试
|
關於作者: |
Adam Freeman是一位经验丰富的IT专业人士,在多家公司担任过高级职位,还曾担任一家全球银行的首席技术官和首席运营官。退休之后,他热衷于写作和长跑。
|
目錄:
|
第Ⅰ部分 Angular基础知识
第1章 准备工作3
1.1 需要了解什么3
1.2 本书结构3
1.2.1 第Ⅰ部分:Angular基础知识3
1.2.2 第Ⅱ部分:Angular详解4
1.2.3 第Ⅲ部分:Angular高级功能4
1.3 本书不介绍什么4
1.4 Angular开发需要什么软件4
1.5 如何设置开发环境4
1.6 学习示例时遇到问题怎么办4
1.7 如果在书中发现错误怎么办5
1.8 大量示例5
1.9 获取示例代码6
1.10 联系作者6
1.11 如果你真的很喜欢这本书7
1.12 如果你不喜欢这本书7
1.13 本章小结7
第2章 第一个Angular应用程序9
2.1 准备开发环境9
2.1.1 安装Node.js9
2.1.2 安装angular-cli包10
2.1.3 安装编辑器11
2.1.4 安装浏览器11
2.2 创建并准备项目11
2.2.1 创建项目11
2.2.2 启动开发工具12
2.3 向项目中添加Angular功能13
2.3.1 创建数据模型14
2.3.2 向用户显示数据16
2.3.3 更新组件17
2.3.4 设置HTML元素的样式20
2.3.5 显示待办事项列表21
2.3.6 创建双向数据绑定24
2.3.7 添加待办事项26
2.3.8 显示完成的待办事项29
2.4 本章小结31
第3章 将Angular放在上下文中33
3.1 理解Angular的强项33
3.2 比较Angular、React和Vue.js34
3.3 理解MVC模式35
3.3.1 理解模型36
3.3.2 理解控制器组件37
3.3.3 理解视图模板38
3.4 理解RESTful服务38
3.5 常见的设计缺陷39
3.5.1 将逻辑放错地方40
3.5.2 数据存储采用的数据格式40
3.5.3 足够的知识足以制造麻烦40
3.6 本章小结40
第4章 HTML和CSS入门43
4.1 准备示例项目43
4.2 理解HTML45
4.2.1 理解空元素45
4.2.2 理解属性45
4.2.3 应用无值属性46
4.2.4 在属性中引用字面量46
4.2.5 理解元素内容46
4.2.6 理解文档结构47
4.3 理解Bootstrap48
4.3.1 应用基本的Bootstrap类48
4.3.2 使用Bootstrap样式化表格51
4.3.3 使用Bootstrap创建表单52
4.3.4 使用Bootstrap创建网格53
4.4 本章小结58
第5章 JavaScript与TypeScript:第1部分59
5.1 准备示例项目60
5.2 使用语句61
5.3 定义和使用函数62
5.3.1 定义带形参的函数63
5.3.2 定义返回结果的函数64
5.3.3 将函数用作其他函数的实参64
5.4 使用变量和类型65
5.4.1 使用变量闭包67
5.4.2 使用基本数据类型67
5.5 使用JavaScript操作符69
5.5.1 使用条件语句69
5.5.2 相等操作符和恒等操作符70
5.5.3 显式类型转换71
5.6 处理数组72
5.6.1 使用数组字面量73
5.6.2 数组内容的读取和修改73
5.6.3 遍历数组内容73
5.6.4 spread操作符74
5.6.5 使用内置数组方法75
5.7 本章小结76
第6章 JavaScript与TypeScript:第2部分77
6.1 准备示例项目77
6.2 使用对象78
6.2.1 使用对象字面量78
6.2.2 将函数用作方法79
6.2.3 定义类79
6.3 处理JavaScript模块82
6.4 有用的TypeScript特性86
6.4.1 使用类型注解86
6.4.2 使用元组90
6.4.3 使用可索引类型91
6.4.4 使用访问修饰符91
6.5 本章小结92
第7章 SportsStore:一个真实的应用程序93
7.1 准备项目93
7.1.1 安装额外的NPM软件包94
7.1.2 准备RESTful Web服务95
7.1.3 准备HTML文件97
7.1.4 创建文件夹结构97
7.1.5 运行示例应用程序98
7.1.6 启动RESTful Web服务98
7.2 准备Angular项目功能98
7.2.1 更新根组件98
7.2.2 更新根模块99
7.2.3 检查引导文件100
7.3 启动数据模型100
7.3.1 创建模型类100
7.3.2 创建虚拟数据源101
7.3.3 创建模型存储库102
7.3.4 创建功能模块103
7.4 启动商店103
7.4.1 创建Store组件和模板104
7.4.2 创建商店功能模块105
7.4.3 更新根组件和根模块106
7.5 添加商店功能:产品详情107
7.5.1 显示产品详情107
7.5.2 添加类别选择108
7.5.3 添加产品分页功能110
7.5.4 创建自定义指令112
7.6 本章小结116
第8章 SportsStore:订单和结账117
8.1 准备示例应用程序117
8.2 创建购物车117
8.2.1 创建购物车模型117
8.2.2 创建购物车概览组件119
8.2.3 将购物车集成到商店中120
8.3 添加URL路由123
8.3.1 创建购物车详情和结账组件124
8.3.2 创建和应用路由配置124
8.3.3 应用程序导航126
8.3.4 路由守卫128
8.4 完成购物车详情功能130
8.5 处理订单133
8.5.1 扩展模型133
8.5.2 收集订单详情135
8.6 使用RESTful Web服务138
8.7 本章小结140
第9章 SportsStore:管理141
9.1 准备示例应用程序141
9.1.1 创建模块141
9.1.2 配置URL路由系统144
9.1.3 导航到管理URL145
9.2 实现身份验证146
9.2.1 理解身份验证系统146
9.2.2 扩展数据源147
9.2.3 创建身份验证服务148
9.2.4 启用身份验证149
9.3 扩展数据源和存储库151
9.4 创建管理功能结构155
9.4.1 创建占位符组件155
9.4.2 准备常用内容和功能模块156
9.4.3 实现产品功能158
9.4.4 实现订单功能162
9.5 本章小结164
第10章 SportsStore:渐进式特性和部署165
10.1 准备示例应用程序165
10.2 添加渐进式特性165
10.2.1 安装PWA包165
10.2.2 缓存数据URL166
10.2.3 响应对连接的更改167
10.3 为部署准备应用程序169
10.3.1 创建数据文件169
10.3.2 创建服务器169
10.3.3 更改存储库类中的Web服务URL171
10.4 构建和测试应用程序172
10.5 将SportsStore应用程序容器化174
10.5.1 安装Docker174
10.5.2 准备应用程序174
10.5.3 创建Docker容器174
10.5.4 运行应用程序175
10.6 本章小结177
第Ⅱ部分 Angular详解
第11章 理解Angular项目和工具181
11.1 创建新的Angular项目181
11.2 了解项目结构182
11.2.1 了解src文件夹183
11.2.2 了解包文件夹184
11.3 使用开发工具187
11.3.1 了解开发HTTP服务器187
11.3.2 了解构建过程188
11.3.3 使用linter192
11.4 理解Angular应用程序是如何工作的194
11.4.1 理解HTML文档194
11.4.2 理解应用程序引导195
11.4.3 理解Angular根模块196
11.4.4 理解Angular组件197
11.4.5 理解内容显示197
11.5 了解生产构建过程199
11.5.1 了解预编译199
11.5.2 了解差异加载199
11.5.3 运行生产构建201
11.6 在Angular项目中开始开发201
11.6.1 创建数据模型201
11.6.2 创建组件和模板205
11.6.3 配置根Angular模块206
11.7 本章小结207
第12章 使用数据绑定209
12.1 准备示例项目210
12.2 理解单向数据绑定210
12.2.1 理解绑定目标212
12.2.2 理解表达式213
12.2.3 理解括号214
12.2.4 理解宿主元素214
12.3 使用标准属性和属性绑定215
12.3.1 使用标准属性绑定215
12.3.2 使用字符串插入绑定216
12.3.3 使用元素属性绑定217
12.4 设置CSS类和样式218
12.4.1 使用类绑定218
12.4.2 使用样式绑定223
12.5 更新应用程序的数据226
12.6 本章小结228
第13章 使用内置指令229
13.1 准备示例项目230
13.2 使用内置指令231
13.2.1 使用ngIf指令232
13.2.2 使用ngSwitch指令234
13.2.3 使用ngFor指令236
13.2.4 使用ngTemplateOutlet指令244
13.3 理解单向数据绑定的限制246
13.3.1 使用幂等表达式246
13.3.2 理解表达式上下文249
13.4 本章小结251
第14章 使用事件和表单253
14.1 准备示例项目254
14.1.1 导入表单模块254
14.1.2 准备组件和模板254
14.2 使用事件绑定255
14.2.1 使用事件数据259
14.2.2 使用模板引用变量260
14.3 使用双向数据绑定262
14.4 处理表单265
14.4.1 向示例应用程序添加表单265
14.4.2 添加表单数据验证267
14.4.3 验证整个表单275
14.5 使用基于模型的表单281
14.5.1 启用基于模型的表单功能282
14.5.2 定义表单模型类282
14.5.3 使用模型进行验证285
14.5.4 根据模型生成元素288
14.6 创建自定义表单验证器289
14.7 本章小结292
第15章 创建属性指令293
15.1 准备示例项目294
15.2 创建简单的属性指令296
15.3 在指令中访问应用程序数据298
15.3.1 读取宿主元素属性298
15.3.2 创建数据绑定输入
属性300
15.3.3 响应输入属性的变化303
15.4 创建自定义事件305
15.5 创建宿主元素绑定308
15.6 在宿主元素上创建双向绑定309
15.7 导出指令用于模板变量312
15.8 本章小结315
第16章 创建结构型指令317
16.1 准备示例项目318
16.2 创建简单的结构型指令319
16.2.1 实现结构型指令类320
16.2.2 启用结构型指令322
16.2.3 使用结构型指令的简洁语法323
16.3 创建迭代结构型指令324
16.3.1 提供额外的上下文数据327
16.3.2 使用简洁的结构语法329
16.3.3 处理属性级数据变更330
16.3.4 处理集合级数据变更331
16.4 查询宿主元素内容340
16.4.1 查询多个子内容344
16.4.2 接收查询变更通知346
16.5 本章小结347
第17章 理解组件349
17.1 准备示例项目350
17.2 使用组件组织应用程序350
17.2.1 创建新组件351
17.2.2 定义模板354
17.2.3 完成组件的重组363
17.3 使用组件样式364
17.3.1 定义外部组件样式365
17.3.2 使用高级样式特性366
17.4 查询模板内容372
17.5 本章小结374
第18章 使用和创建管道375
18.1 准备示例项目376
18.2 理解管道378
18.3 创建一个自定义管道380
18.3.1 注册自定义管道381
18.3.2 应用自定义管道382
18.3.3 组合管道383
18.3.4 创建非纯管道384
18.4 使用内置管道387
18.4.1 格式化数值388
18.4.2 格式化货币值390
18.4.3 格式化百分比393
18.4.4 格式化日期394
18.4.5 改变字符串大小写397
18.4.6 将数据序列化为JSON数据399
18.4.7 将数据数组切片400
18.4.8 格式化键值对401
18.4.9 选择值402
18.4.10 复数化值404
18.5 本章小结405
第19章 使用服务407
19.1 准备示例项目408
19.2 理解对象分发问题409
19.2.1 问题的提出409
19.2.2 利用依赖注入将对象作为服务分发414
19.2.3 在其他构造块中声明依赖419
19.3 理解测试隔离问题425
19.4 完成服务的融入428
19.4.1 更新根组件和模板429
19.4.2 更新子组件430
19.5 本章小结431
第20章 使用服务提供程序433
20.1 准备示例项目434
20.2 使用服务提供程序435
20.2.1 使用类提供程序438
20.2.2 使用值提供程序445
20.2.3 使用工厂提供程序447
20.2.4 使用已有的服务提供程序449
20.3 使用本地提供程序450
20.3.1 理解单个服务对象的局限性450
20.3.2 在组件中创建本地提供程序452
20.3.3 理解服务提供程序的替代方案453
20.3.4 控制依赖解析458
20.4 本章小结459
第21章 使用和创建模块461
21.1 准备示例项目461
21.2 理解根模块463
21.2.1 理解imports属性465
21.2.2 理解declarations属性465
21.2.3 理解providers属性466
21.2.4 理解bootstrap属性466
21.3 创建功能模块468
21.3.1 创建模型模块469
21.3.2 创建实用工具功能模块473
21.3.3 使用组件创建一个功能模块478
21.4 本章小结482
第Ⅲ部分 Angular高级功能
第22章 创建示例项目485
22.1 启动示例项目485
22.1.1 添加和配置Bootstrap
CSS包485
22.1.2 创建项目结构486
22.2 创建模型模块486
22.2.1 创建产品数据类型486
22.2.2 创建数据源和存储库486
22.2.3 完成模型模块488
22.3 创建核心模块488
22.3.1 创建共享状态服务488
22.3.2 创建表格组件489
22.3.3 创建表单组件490
22.3.4 完成核心模块492
22.4 创建消息模块493
22.4.1 创建消息模型和服务493
22.4.2 创建组件和模板493
22.4.3 完成消息模块494
22.5 完成项目495
22.6 本章小结496
第23章 使用Reactive Extensions497
23.1 准备示例项目498
23.2 理解问题498
23.3 使用Reactive Extensions解决
问题501
23.3.1 理解Observable502
23.3.2 理解Observer503
23.3.3 理解Subject505
23.4 使用async管道506
23.5 扩展应用程序功能模块509
23.6 更进一步511
23.6.1 过滤事件511
23.6.2 转换事件513
23.6.3 只接收不同的事件515
23.6.4 获取和忽略事件517
23.7 本章小结519
第24章 生成HTTP请求521
24.1 准备示例项目522
24.1.1 配置模型功能模块522
24.1.2 创建数据文件523
24.1.3 更新表单组件523
24.1.4 运行示例项目524
24.2 理解RESTful Web服务524
24.3 替换静态数据源525
24.3.1 创建新的数据源服务525
24.3.2 配置数据源527
24.3.3 使用REST数据源527
24.3.4 保存和删除数据529
24.4 加强HTTP请求531
24.5 生成跨域请求533
24.6 配置请求头535
24.7 处理错误537
24.7.1 生成用户可使用的消息538
24.7.2 处理错误540
24.8 本章小结541
第25章 路由与导航:第1部分543
25.1 准备示例项目544
25.2 开始学习路由546
25.2.1 创建路由配置546
25.2.2 创建路由组件548
25.2.3 更新根模块548
25.2.4 完成配置549
25.2.5 添加导航链接550
25.2.6 理解路由的效果552
25.3 完成路由实现554
25.3.1 在组件中处理路由变化554
25.3.2 使用路由参数556
25.3.3 在代码中导航562
25.3.4 接收导航事件564
25.3.5 删除事件绑定和支持代码566
25.4 本章小结568
第26章 路由与导航:第2部分569
26.1 准备示例项目569
26.2 使用通配符和重定向575
26.2.1 在路由中使用通配符575
26.2.2 在路由中使用重定向577
26.3 在组件内部导航578
26.3.1 响应正在发生的路由变化579
26.3.2 为活动路由设置不同样式的链接581
26.3.3 修复All按钮584
26.4 创建子路由585
26.4.1 创建子路由出口586
26.4.2 从子路由访问参数588
26.5 本章小结592
第27章 路由与导航:第3部分593
27.1 准备示例项目593
27.2 守卫路由595
27.2.1 使用解析器推迟导航595
27.2.2 避免带有守卫的导航601
27.3 动态加载功能模块613
27.3.1 创建一个简单的功能模块613
27.3.2 动态加载模块614
27.3.3 守卫动态模块618
27.4 指定命名出口620
27.4.1 创建附加的出口元素621
27.4.2 在使用多个出口的情况下导航623
27.5 本章小结624
第28章 使用动画625
28.1 准备示例项目626
28.1.1 禁用HTTP延迟626
28.1.2 简化表格模板和路由配置627
28.2 开始学习Angular动画629
28.2.1 启用动画模块629
28.2.2 创建动画630
28.2.3 应用动画633
28.2.4 测试动画效果635
28.3 理解内置的动画状态637
28.4 理解元素过渡638
28.4.1 为内置状态创建过渡638
28.4.2 控制动画的过渡639
28.5 理解动画样式组644
28.5.1 在可重用的分组中定义公共样式644
28.5.2 使用元素变形646
28.5.3 应用CSS框架样式647
28.6 本章小结649
第29章 Angular单元测试651
29.1 准备示例项目652
29.2 创建一个简单的单元测试654
29.3 使用Jasmine完成单元测试655
29.4 测试Angular组件656
29.4.1 使用TestBed类完成工作656
29.4.2 测试数据绑定660
29.4.3 测试带有外部模板的组件662
29.4.4 测试组件事件663
29.4.5 测试输出属性665
29.4.6 测试输入属性667
29.4.7 测试异步操作669
29.5 测试Angular指令671
29.6 本章小结673
|
內容試閱:
|
Web应用程序的功能越来越丰富、用户体验越来越好,随之而来的,是前端开发人员变得越来越受欢迎。
经验丰富的前端开发人员知道,合适的前端框架能够帮助自己提高工作效率,编写出高性能且容易使用的Web应用程序。在前端开发的世界中,Angular是一个非常出色的框架,目前由Google提供支持。
关于Angular,有一个小故事。Angular的前身是AngularJS,而AngularJS的前身称作GetAngular,那是一个由Mi?ko Hevery和Adam Abrons在工作之余开发的项目。在项目开发期间,Hevery已经就职于Google,并负责Google Feedback项目。经历了6个月的开发后,该项目的代码超过17 000行,这让Hevery感到非常沮丧。他想到了GetAngular,认为这个框架能够为Google Feedback项目提供很大的帮助。于是,他找到自己的经理,请求用AngularJS重写项目,并打赌说自己能够在两周内重写整个项目。尽管他输掉了赌局因为他最终用了3周而不是2周,但项目的代码量从近两万行锐减到1500行。也正因如此,Google才对GetAngular产生了浓厚的兴趣,并最终将其纳入自己的产品体系,更名为AngularJS。
从这个小故事可以看出,Angular能够显著降低Web应用程序的代码量,进而提高开发人员的生产效率、加快项目的开发进度。这种优势源于Angular提供的多种功能,例如依赖注入、双向数据绑定、采用指令等。而且,Angular是使用TypeScript构建的,这是JavaScript的超集,提供了对强类型的支持,使得前端开发工作变得更加简单。不仅如此,Angular的更新相当迅速,每个新的主版本都带来不小的改进,使这个框架依然保持着旺盛的生命力。
综上可知,对于有志于转向前端的开发人员,Angular是一个上佳的选择,而《Angular高级编程第4版》则可作为学习Angular的指路明灯,帮助读者从基础功能到高级功能,了解Angular开发的方方面面。
《Angular高级编程第4版》分为三部分。第Ⅰ部分讲解Angular开发的基础知识,对HTML、CSS、JavaScript和TypeScript也进行了介绍,确保对前端开发一无所知的读者,也能够快速上手。本部分最后还开发了一个简单的Web应用程序,帮助读者巩固基础知识。第Ⅱ部分详细讲解Angular,内容涵盖项目结构、开发工具、数据绑定、各种指令、事件和表单、管道、服务、服务提供程序、模块等。这部分是大全式讲解,对Angular的主要功能都进行了介绍。第Ⅲ部分更偏向较高级的功能,介绍了Reactive Extensions、HTTP请求、路由、动画和单元测试。
《Angular高级编程第4版》内容全面详细,并且通过大量代码示例和屏幕截图来演示概念和功能,理解起来比较轻松。相信读者在阅读完《Angular高级编程第4版》后,一定会有丰厚的收获。希望这本书能够为读者成为优秀的前端开发人员助力!
译者
|
|