《Angular从零到一》导读

简介:

本节书摘来自华章出版社《Angular从零到一》一书中作者Richard Banfield 著

易艺 译

,更多章节内容可以访问云栖社区“华章计算机”公众号查看。


 

前  言
一个大叔码农的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地址(https://github.com/wpcfan/awesome-tutorials)上提问题,我们一起打造一本一直在生长的书。希望年轻的你和大叔的我一起学习,一起面对这个迅速成长的行业!

王芃
2017年2月11日



目  录
前 言
第1章 认识Angular  
第2章 用Form表单做一个登录控件  
第3章 建立一个待办事项应用  
第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
相关文章
电力规约DL/T 654 2007多功能电表通信协议 调试工具
电力规约DL/T 654 2007多功能电表通信协议 调试工具
453 1
|
Ubuntu 异构计算 Windows
ModelScope问题之下载推荐的基础镜像失败如何解决
ModelScope镜像是指用于在ModelScope平台上创建和管理的容器镜像,这些镜像包含用于模型训练和推理的环境和依赖;本合集将说明如何使用ModelScope镜像以及管理镜像的技巧和注意事项。
685 0
|
10月前
|
JavaScript 前端开发 编译器
Vue 3:下一代前端框架革新
Vue 3:下一代前端框架革新
418 104
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
1460 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
12月前
|
存储 JSON Prometheus
产品图片上传API接口
产品图片上传API是电商、内容管理系统等常用功能,支持通过HTTP请求上传图片至服务器,便于产品图像管理。本文详解其工作原理、实现步骤与最佳实践,助您快速构建高效上传功能。
|
数据采集 人工智能 供应链
《AI赋能工业制造:开启智能生产新时代》
在新一轮科技革命中,人工智能(AI)与工业制造深度融合,推动制造业迈向智能化、数字化新时代。AI通过智能生产调度、设备故障预测、质量检测和供应链优化等应用,显著提升效率和创新能力。特斯拉和富士康的智能工厂展示了AI在实际生产中的巨大潜力。然而,数据质量、技术集成和人才短缺等问题仍需解决。未来,AI将与5G、物联网等技术融合,进一步推动工业制造全面升级。
1130 9
|
敏捷开发 数据可视化 数据挖掘
"智慧办公,从使用板栗看板开始"
板栗看板是一款基于看板管理理念的协同软件,提供直观的视觉平台,助力团队高效管理任务、跟踪进度和沟通。其核心特点包括可视化任务管理、灵活的工作流程、实时更新与通知、协同功能及数据分析,适用于项目管理、敏捷开发、跨部门协作等场景,有效提升团队效率。
|
存储 应用服务中间件 Linux
开源日志管理系统Graylog之Sidecar功能实践
开源日志管理系统Graylog之Sidecar功能实践
1502 0
开源日志管理系统Graylog之Sidecar功能实践
|
存储 人工智能 缓存
《鸿蒙安全沙箱机制——人工智能应用的安全护盾》
鸿蒙系统的安全沙箱机制为人工智能应用提供了强大的安全保障。通过独立沙箱目录和路径隔离,确保每个应用在独立环境中运行,防止数据泄露和跨应用攻击。严格的访问控制和权限管理限制了程序的访问权限,保护敏感数据。统一身份认证、生物识别技术增强了登录安全性,防止未经授权访问。安全检测和重签名机制阻止恶意软件动态加载,确保应用的真实性和完整性。透明的权限管理让用户对应用行为有更多知情权和控制权。鸿蒙系统全方位的安全防护,使人工智能应用能在安全可靠的环境中运行。
967 15
|
云安全 运维 安全
阿里云免费版SSL证书申请及部署图文教程指导
SSL证书是个人和企业搭建网站不可或缺的云安全产品,SSL证书能够为网站和移动应用(APP)及小程序提供数据HTTPS加密协议访问,保障数据的安全。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。

热门文章

最新文章