产品特色
编辑推荐
基于Angular 2,深入讲解基本概念的背后原理,以及众多优秀的设计模式和编程范式。
摆脱复杂配置,带你从无到有地搭建前端应用,讲解开门见山,语言风趣幽默
这不是一本介绍如何安装配置的书籍,而是带你立即进入Angular世界,从0到1开始搭建前端应用。作者用诙谐幽默的笔触描写了基本概念背后的原理,可快速搭建生产环境的应用。
内容简介
本书系统介绍Angular的基础知识与开发技巧,可帮助前端开发者快速入门。共有9章,第1章介绍Angular的基本概念,第2~7章从零开始搭建一个待办事项应用,然后逐步增加功能,如增加登录验证、将应用模块化、多用户版本的实现、使用第三方样式库、动态效果制作等。第8章介绍响应式编程的概念和Rx在Angular中的应用。第9章介绍在React中非常流行的Redux状态管理机制,这种机制的引入可以让代码和逻辑隔离得更好,在团队工作中强烈建议采用这种方案。本书不仅讲解Angular的基本概念和实践,而且分享了作者解决问题的过程和逻辑,讲解细腻,风趣幽默,适合有面向对象编程基础的读者阅读。
作者简介
王芃,资深开发人员、创业者,曾经在多家软件公司历任项目经理、项目总监、部门经理,后创立成都索课科技有限公司。在多年的开发经历中用Java等语言开发了多种类型的项目,积累了丰富的开发经验。乐于分享,发布大量技术文章。
精彩书评
如果你是Java程序员或C#程序员,那么这本书将是你跨界到前端领域的捷径!作者是一位热爱技术的资深Java程序员,由他来写这样一本书真是再合适不过了!
—— ThoughtWorker & Google开发技术专家 雪狼
前端技术的发展正在变得越来越快,Angular在中国的使用者也正在变得越来越多。作为前端开发者,我们正在迎来一个亘古未有的时代!这本书以一个小应用贯穿全部,从实战的角度覆盖了Angular的全部重要知识点,是一本非常不错的参考书。希望更多来自中国的技术专家能出来分享经验,带领大家一起前进。
—— Google Angular Developers PM 大漠穷秋
Angular 2.0的新特性包括:对于Native App的支持、服务器端渲染、更加专注移动应用开发、更加现代化,等等。本书根据作者真实的项目开发经验,引入大量开发案例进行讲解。同时讲述生动有趣,让枯燥的技术变得简单易学,是不可多得的优质Angular学习书籍。重要的是,本书将一步一步带领你掌握Angular 2.0的开发。
—— 海棠学院创始人CEO 张小河
目录
前 言
第1章 认识Angular 1
1.1 Angular 2简介 1
1.2 环境配置要求 2
1.3 第一个小应用 Hello Angular 3
1.4 第一个组件 6
1.5 一些基础概念 8
1.5.1 元数据和装饰器 8
1.5.2 模块 10
1.5.3 组件 12
1.6 引导过程 13
1.7 代码的使用和安装 14
第2章 用Form表单做一个登录控件 15
2.1 对于login组件的小改造 17
2.2 建立一个服务完成业务逻辑 21
2.3 双向数据绑定 26
2.4 表单数据的验证 28
2.5 验证结果的样式自定义 34
2.6 组件样式 36
2.7 小练习 37
第3章 建立一个待办事项应用 38
3.1 建立routing的步骤 38
3.1.1 路由插座 40
3.1.2 分离路由定义 41
3.2 让待办事项变得有意义 43
3.3 建立模拟Web服务和异步操作 47
3.3.1 构建数据模型 48
3.3.2 实现内存Web服务 49
3.3.3 内存服务器提供的Restful API 50
3.3.4 Angular 2内建的HTTP方法 52
3.3.5 JSONP和CORS 54
3.3.6 页面展现 54
3.4 小练习 58
第4章 进化!将应用模块化 59
4.1 一个复杂组件的分拆 59
4.1.1 输入和输出属性 62
4.1.2 CSS样式的一点小说明 70
4.1.3 控制视图的封装模式 72
4.2 封装成独立模块 72
4.3 更真实的Web服务 76
4.4 完善Todo应用 78
4.5 填坑,完成漏掉的功能 82
4.5.1 用路由参数传递数据 82
4.5.2 批量修改和批量删除 86
4.6 小练习 90
第5章 多用户版本应用 91
5.1 数据驱动开发 91
5.2 验证用户账户的流程 96
5.2.1 核心模块 97
5.2.2 路由守卫 98
5.3 路由模块化 105
5.4 路由的惰性加载——异步路由 106
5.5 子路由 108
5.6 用VSCode进行调试 112
5.7 小练习 116
第6章 使用第三方样式库及
模块优化 117
6.1 生产环境初体验 117
6.2 更新angular-cli的方法 120
6.3 第三方样式库 121
6.4 第三方JavaScript类库的集成方法 125
6.5 模块优化 132
6.6 多个不同组件间的通信 134
6.7 方便的管道 140
6.7.1 自定义一个管道 142
6.7.2 内建管道的种类 143
6.8 指令 145
6.9 小练习 148
第7章 给组件带来活力 149
7.1 更炫的登录页 149
7.1.1 响应式的CSS框架 149
7.1.2 寻找免费的图片源 153
7.2 自带动画技能的Angular 2 157
7.3 Angular 2动画再体验 159
7.3.1 state和transition 159
7.3.2 奇妙的animate函数 164
7.3.3 关键帧 166
7.4 完成遗失已久的注册功能 168
7.5 响应式表单 173
7.5.1 表单控件和表单组 176
7.5.2 表单提交 179
7.5.3 表单验证 179
7.5.4 表单构造器 181
7.5.5 Restful API的实验 182
7.6 Angular 2的组件生命周期 185
7.7 小练习 187
第8章 Rx——隐藏在Angular中的利剑 188
8.1 Rx再体验 190
8.2 常见操作 194
8.2.1 合并类操作符 195
8.2.2 创建类操作符 203
8.2.3 过滤类操作符 208
8.2.4 Subject 210
8.3 Angular 2中的内建支持 211
8.3.1 Async管道 214
8.3.2 Rx版本的Todo 216
8.4 小练习 223
第9章 用Redux管理Angular应用 224
9.1 什么是Redux 224
9.1.1 Store 225
9.1.2 Reducer 225
9.1.3 Action 226
9.2 为什么要在Angular中使用 227
9.3 如何使用Redux 231
9.3.1 简单内存版 231
9.3.2 时光机器调试器 239
9.3.3 带HTTP后台服务的版本 242
9.3.4 一点小思考 247
9.3.5 用户登录和注册的改造 248
9.4 小练习 256
9.5 小结 256
前言/序言
一个大叔码农的Angular 2创世纪
作为一个出生于20世纪70年代的大叔,我在软件这个领域已经摸爬滚打了16年,从程序员、项目经理、产品经理,项目总监,到部门管理等各个角色都体验过,深深地了解到这个行业发展的速度之快是其他行业无法比拟的:从编程语言、各种平台、各种框架、设计模式到各类开源工具、组件林林总总,要学习的东西实在太多,因为变化太快。
但万变不离其宗,名词变化虽多,透射的本质其实是趋同的:那就是程序员受不了代码的折磨,千方百计地想让这个工作更简单,更能应对变化。比如说,面向对象编程(Object-Oriented Programming)理念的提出其实是牺牲了部分性能换来代码层次结构的清晰,因此也催生了C++、Java、C#等一系列优秀的面向对象编程语言;后来程序员们发现在实际的编程逻辑中,往往不是像对象树那样可以划分得那么清楚。还有一些类似安全、日志等功能其实是撒在系统各个角落的,于是,面向切面的编程(Aspect-Oriented Programming)应运而生。再后来一部分科学家发现现有的编程语言做分析或数据计算实在太麻烦,明明要计算的逻辑很清晰,却要用一大堆的对象封装赋值,函数式编程(Functional Programming)便出现了。最近几年被产品经理逼疯的程序员认为强类型语言改动起来太慢太繁琐,于是动态脚本类语言大行其道。
仔细分析一下,这些语言不是互斥的,其实好的元素都是会被慢慢吸收到各自的语言、平台上面去的。比如C#、Java也采纳了函数式编程的一些特点,像Lamda表达式;再比如.NET和Java平台基础上也拥有动态脚本语言,像.NET平台上的IronRuby,Java平台上的Scala等。本书写的Angular 2就是在JavaScript这种脚本语言基础上引入了TypeScript,进而可以兼具面向对象编程和强类型语言的优点;引入了依赖性注入(Dependency Injection)这种在强类型语言中被证明非常有用的设计模式;通过引入Rx,让JavaScript拥有了函数式编程的能力。
写这本书的起因很偶然。我们团队以Android和iOS开发人员为主,前端开发人员只有一个。但在开发过程中我们体会到原生App的开发迭代速度比较慢,因此希望以前端开发快速迭代,逻辑和界面摸清楚后再进行App开发。我们决定走前端路线后,就开始挑选前端框架,React、Vue和Angular 2我们都尝试了,最终选择Angular 2是因为谷歌在Angular 2中把多年Android开发积累的优秀思想带入了Angular,使得Angular的开发模式太像App开发了。有App开发经验或者Java、.NET开发经验的人可以非常舒服地切入进去。有了选择,我就开始边学习边给开发小伙伴做培训,培训资料也就当成网文发表出来。没想到在网上得到很多网友的支持和鼓励,觉得我边学边写时对一些问题的思考过程和改进过程对大家的学习也很有帮助。而我也在与大家的互动和分享中纠正了对一些概念和模式的认识。互动和分享是最好的学习方式,这也是本书区别于其他“专门教程”的重要一点,我们是一起在学习,一起在思考的。特别感谢简书和掘金等平台的读者,帮我纠正了很多错误认识和笔误等。机械工业出版社的吴怡编辑也正是在网上看到我的文章后,鼓励我结集出书,给我提了很多中肯意见,最终才有此书,非常感谢。
本书分为9章,第1~7章中我们从无到有地搭建了一个待办事项应用,但是我们增加了一些需求:多用户和HTTP后台。这样待办事项这个应用就变得麻雀虽小五脏俱全。通过这样一个应用的开发,我们熟悉了大部分重要的Angular 2概念和实践操作。建议读者按顺序阅读和实践。阅读完第7章,基本可以在正式的开发工作中上手了。第8章介绍了响应式编程的概念和Rx在Angular中的应用,可以说,如果不使用Rx,Angular 2的威力就折半了,很多原来需要复杂逻辑处理的地方用Rx解决起来非常方便。由于Rx本身的学习曲线较陡,我们花了很大篇幅做细致的讲解。第9章是在第8章基础之上,引入了在React中非常流行的Redux状态管理机制,这种机制的引入可以让代码和逻辑隔离得更好,在团队工作中强烈建议采用这种方案。第8章和第9章由于学习门槛较高,有的读者可能暂时接受起来有困难,遇到这种情况可以先放下,等到使用Angular一段时间后再回头来看。
大家在阅读过程中可能会发现从第3章开始起,我们在不断地打磨待办事项这个应用的逻辑,持续地优化。我写这本书其实不仅是为了让大家入门Angular(类似的书太多了,不需要我再写一本),更多的是想把自己琢磨这些问题、解决这些问题的过程和逻辑与大家分享,把一些好的设计模式和思想介绍给大家,这些模式和思想远比一个框架更有生命力。
本书适合有面向对象编程基础的、掌握一门现代编程语言的读者阅读。如果有Java、C#、Objective-C等强类型语言背景,对于本书中介绍的Angular各种元数据修饰符接受程度会很高,对于TypeScript的类型等也会一点就透。如果有JavaScript背景,理解TypeScript语法是无障碍的,但强类型的约束和修饰符等概念需要仔细体会。如果使用过Spring Framework或者Dagger2等IoC框架,那么对依赖性注入的概念就再熟悉不过了。
建议学习的同时或之后可以比较一些其他主流前端框架,比如React或Vue,参照后你会发现很多功能其实异曲同工。在读本书的过程中如果发现有错误,希望你可以在书籍源码的Github地址上提问题,我们一起打造一本一直在生长的书。希望年轻的你和大叔的我一起学习,一起面对这个迅速成长的行业!
王芃
2017年2月11日
Angular从零到一 电子书 下载 mobi epub pdf txt