书海网短评:
适读人群:前端工程师、Web全栈开发者及普通技术爱好者。√本书为谷歌开发者社区官方指定用书,由谷歌Angular技术开发团队作序力荐。√目前市面上*无仅有的基于Angular4系统全面介绍这一技术方方面
√《揭秘Angular(第2版)》为谷歌开发者社区官方指定用书,由谷歌Angular技术开发团队作序力荐。
√目前市面上*无仅有的基于Angular4系统全面介绍这一技术方方面面的书籍。
√《揭秘Angular(第2版)》作者团队从Angular早期版本问世以来即投入生产实践,积累丰富实战经验。
√首版问世后饱受好评,国内一线前端团队及技术社区资深专家集体亮相盛赞。
《揭秘Angular(第2版)》作为前版《揭秘Angular2》的重大升级,是紧跟Angular.js新版本的实战quan威指南。Angular诞生于Google,已用于多款Google及全球商业产品。它是一套JavaScript前端框架,旨在开发当下流行的数据驱动的单页面Web应用,其核心特性是:MVC、模块化、自动双向数据绑定、语义化标签、依赖注入等。作为一部系统讲解流行前端框架Angular新版的权wei著作,《揭秘Angular(第2版)》覆盖入门、进阶和实战三大主题。部分从前端的故事起点说起,然后对Angular以及TypeScript进行了简单的介绍,接着通过一个通讯录例子让读者快速入门Angular的开发;第二部分则深入讲解了Angular架构以及Angular核心内容,包括组件、模板、指令、服务、依赖注入、路由以及测试,此外,在相应的章节里还补充说明了譬如变化监测的核心Zones(第6章)、双向绑定的原理(第7章)、RxJS(第9章)等关键内容;第三部分则通过问卷调查系统来指引读者进行Angular项目的实战;第四部分主要是Angular延伸知识的讲解,介绍了ionic框架(第19章)以及Angular的服务端渲染(第20章)相关技术。
广发证券互联网金融技术团队,是早期拥抱Angular的坚定践行者。作为全新一代的证券业IT研发组织,团队致力于用*新*好的技术打造行业方案、支持业务创新。我们热爱开源技术、信奉敏捷方法、编写优雅代码、关注用户体验,我们喜欢互联网工程师文化,我们在技术创新中寻找到乐趣。
当Angular还在Alpha版本时,《揭秘Angular(第2版)》作者所在团队就已经在产品中使用。几年时间一路跟下来,踩过很多坑,收获也很多。这些丰富经历保证了《揭秘Angular(第2版)》满满地全是干货,值得仔细阅读。
——大漠穷秋GoogleAngular中国开发者PM
在前端规模化时代做开发是一件幸福的事。几年前似乎没有太多选择,大多用jQuery搞定各种浏览器上的坑,以简陋的“粉笔”在网页上“涂鸦”。如今又一下子拥有了太多选择:React、Vue、Angular……我不是其中任何一个流行的(和不那么流行的)框架的“死忠粉”,在工作中会根据适合的情况选用它们。很高兴《揭秘Angular(第2版)》不是死板地介绍特性和罗列API,而是通过实际例子帮助读者理解Angular的架构和设计思想。跟着作者的思路走一遍,前端技能会有实质提升,而不仅是“学会使用”Angular。我们需要掌握框架的灵魂,而不是成为它的奴隶。
——月影360奇舞团负责人
广发证券互联网金融技术团队是一个活跃的技术团队,近几年翻译过大量Angular的文章,并在实际业务中将Angular付诸实践,积累了很多经验,同时也促进了团队成员对Angular的深入理解。Angular是较早出现的具有颠覆性的Web前端框架,在推出之初就受到广泛关注,并快速发展起来,给我们带来一些新的理念。相信会有更多的人因为这《揭秘Angular(第2版)》而更加全面、深入地了解Angular!
——于涛Kinvix腾讯Alloyteam负责人
本应快速发展的Angular,因遭遇React当红和Vue崛起而没能像1.x一样迅速流行。但还是有一些团队在自己的业务里找到实践空间,用它来解决实际问题。从技术角度来看,它丝毫不逊色于竞争对手:与TypeScript的结合、对大型架构的支持让它在企业级开发中拥有非常好的空间。希望大家不要囿于门户之见,用开放的心态通过这《揭秘Angular(第2版)》来了解这门有价值的技术。
——程劭非@Winter
新版Angular以组件化为核心理念,整合可选的开发语言、可配置的变更检测策略、样式封装机制,形成一套适应于企业应用开发的框架。现在,这个领域的开发者又迎来一本适合自己的书。
——徐飞知名前端架构师
《揭秘Angular(第2版)》把广发证券互联网金融技术团队对Angular的理解和实践,用不拖沓的方式传递给读者,值得一读。
——Sofish饿了么大前端负责人
开发者真正了解所选框架并能结合工作场景,才能享受其带来的效率、性能提升。《揭秘Angular(第2版)》覆盖了基础架构与应用,从能做什么讲到为什么这么做,对将要或已经选择Angular的开发者极有裨益。
——吴天豪天猫前端技术专家
《揭秘Angular(第2版)》从概念到实际项目,从API到架构,详细介绍TypeScript和Angular开发经验,是学习Angular的上选。
——曾探腾讯高级工程师
目录
第一部分入门篇
1前端风云2
1.1故事的起点2
1.2AJAX王者归来3
1.3工具库的流行3
1.4百家争鸣3
1.5走进前端新时代4
1.6小结6
2Angular简介7
2.1历史回顾7
2.1.1AngularJS1.x起源7
2.1.2AngularJS1.x迭代之路8
2.1.3初生的Angular9
2.1.4快速发展的Angular10
2.1.5Angular4和后续语义版本11
2.1.6开发语言之选13
2.2Angular简述14
2.2.1核心概念14
2.2.2平台简介16
2.2.3平台亮点18
2.3小结19
3TypeScript入门20
3.1TypeScript概述20
3.1.1概述20
3.1.2安装21
3.2基本类型22
3.2.1布尔类型22
3.2.2数字类型22
3.2.3字符串类型23
3.2.4数组类型23
3.2.5元组类型23
3.2.6枚举类型23
3.2.7任意值类型24
3.2.8null和undefined24
3.2.9void类型25
3.2.10never类型26
3.3声明和解构26
3.3.1let声明27
3.3.2const声明28
3.3.3解构28
3.4函数30
3.4.1函数定义30
3.4.2可选参数30
3.4.3默认参数31
3.4.4剩余参数32
3.4.5函数重载32
3.4.6箭头函数33
3.5类34
3.5.1类的例子34
3.5.2继承与多态34
3.5.3修饰符35
3.5.4参数属性37
3.5.5静态属性37
3.5.6抽象类38
3.6模块39
3.6.1概述39
3.6.2模块导出方式39
3.6.3模块导入方式40
3.6.4模块的默认导出41
3.6.5模块设计原则42
3.7接口44
3.7.1概述44
3.7.2属性类型接口44
3.7.3函数类型接口45
3.7.4可索引类型接口46
3.7.5类类型接口46
3.7.6接口扩展47
3.8装饰器48
3.8.1概述48
3.8.2方法装饰器49
3.8.3类装饰器50
3.8.4参数装饰器52
3.8.5属性装饰器53
3.8.6装饰器组合53
3.9泛型55
3.10TypeScript周边56
3.10.1编译配置文件56
3.10.2声明文件57
3.10.3编码工具58
3.10.4展望未来59
3.11小结59
4快速入门60
4.1HelloWorld例子60
4.1.1准备工作60
4.1.2构建项目61
4.2通讯录例子66
4.2.1背景介绍66
4.2.2架构设计68
4.3小结74
第二部分深入篇
5Angular架构总览76
5.1核心模块介绍76
5.1.1组件77
5.1.2模板81
5.1.3指令83
5.1.4服务84
5.1.5依赖注入84
5.1.6路由86
5.2应用模块89
5.3源码结构介绍92
5.4小结93
6组件94
6.1概述94
6.1.1模块化介绍94
6.1.2组件化标准96
6.1.3Angular的组件99
6.2组件基础100
6.2.1创建组件的步骤100
6.2.2组件的基础构成101
6.2.3组件与模块108
6.3组件交互113
6.3.1组件的输入、输出属性113
6.3.2父组件向子组件传递数据114
6.3.3子组件向父组件传递数据120
6.3.4其他组件交互方式121
6.4组件内容嵌入124
6.5组件生命周期128
6.5.1概述128
6.5.2生命周期钩子128
6.6变化监测130
6.6.1数据变化的源头131
6.6.2变动通知机制132
6.6.3变化监测的响应处理134
6.7扩展阅读140
6.7.1元数据一览表140
6.7.2元数据说明141
6.7.3深入理解Zone.js150
6.7.4不依赖Zone.js的Angular154
6.8小结155
7模板156
7.1模板语法概览156
7.2数据绑定158
7.2.1概述158
7.2.2插值160
7.2.3模板表达式160
7.2.4属性绑定162
7.2.5事件绑定165
7.2.6双向数据绑定168
7.2.7输入和输出属性169
7.3内置指令170
7.3.1NgClass170
7.3.2NgStyle170
7.3.3NgIf171
7.3.4NgSwitch172
7.3.5NgFor172
7.4表单173
7.4.1模板表单例子174
7.4.2表单指令175
7.4.3自定义表单样式184
7.4.4表单校验186
7.5管道189
7.5.1管道介绍189
7.5.2内置管道190
7.5.3自定义管道196
7.5.4管道的变化监测198
7.6扩展阅读202
7.6.1安全导航操作符202
7.6.2双向绑定的原理202
7.7小结204
8指令206
8.1概述206
8.1.1指令分类208
8.1.2内置指令210
8.2自定义属性指令219
8.2.1实现属性指令219
8.2.2为指令绑定输入221
8.2.3响应用户操作223
8.3自定义结构指令224
8.3.1实现结构指令225
8.3.2模板标签与星号前缀227
8.3.3NgIf指令原理229
8.4扩展阅读231
8.5小结235
9服务与RxJS237
9.1Angular服务237
9.1.1概述237
9.1.2使用场景238
9.2HTTP服务242
9.2.1HttpModule242
9.2.2HttpClientModule254
9.3响应式编程262
9.3.1概述262
9.3.2ReactiveX264
9.4RxJS266
9.4.1创建Observable对象266
9.4.2使用RxJS处理复杂场景266
9.4.3RxJS和Promise的对比267
9.4.4“冷”模式下的Observable268
9.4.5RxJS中的Operator269
9.4.6Angular中的RxJS273
9.5小结277
10依赖注入278
10.1依赖注入介绍279
10.2Angular依赖注入282
10.2.1概述282
10.2.2在组件中注入服务285
10.2.3在服务中注入服务287
10.2.4在模块中注入服务288
10.2.5层级注入290
10.2.6注入到派生组件295
10.2.7限定方式的依赖注入297
10.3Provider300
10.3.1概述300
10.3.2Provider注册方式302
10.4扩展阅读305
10.5小结308
11路由309
11.1概述309
11.2基本用法311
11.2.1路由配置311
11.2.2创建根路由模块312
11.2.3添加RouterOutlet指令312
11.3路由策略313
11.3.1HashLocationStrategy介绍314
11.3.2PathLocationStrategy介绍315
11.4路由跳转316
11.4.1使用指令跳转317
11.4.2使用代码跳转319
11.5路由参数321
11.5.1Path参数321
11.5.2Query参数324
11.5.3Matrix参数326
11.6子路由和附属Outlet326
11.6.1子路由326
11.6.2附属Outlet328
11.7路由拦截330
11.7.1激活拦截与反激活拦截330
11.7.2数据预加载拦截334
11.8模块的延迟加载337
11.8.1延迟加载实现337
11.8.2模块预加载339
11.8.3模块加载拦截341
11.9小结342
12测试343
12.1概述343
12.2单元测试344
12.2.1概述344
12.2.2常用测试框架345
12.2.3Jasmine介绍345
12.2.4Karma介绍350
12.2.5Karma结合Jasmine测试350
12.3Angular单元测试355
12.3.1概述355
12.3.2独立单元测试358
12.3.3测试工具集362
12.4端到端测试370
12.4.1概述370
12.4.2Protractor介绍371
12.5小结374
第三部分实战篇
13问卷调查系统简介376
13.1项目背景376
13.2主要特性377
13.2.1首页和帮助页378
13.2.2问卷编辑页378
13.2.3我的问卷页378
13.2.4用户管理页379
13.3产品设计379
13.4小结380
14项目起步381
14.1AngularCLI381
14.1.1简介381
14.1.2常用命令介绍382
14.2其他技术选型391
14.2.1UI样式库391
14.2.2后端服务器391
14.3环境搭建392
14.3.1搭建前端环境392
14.3.2引入样式库393
14.3.3搭建后端环境394
14.4目录结构介绍396
14.5首页开发397
14.6导航栏开发401
14.7小结402
15问卷编辑模块403
15.1概述403
15.1.1特性管理模块403
15.1.2功能设计406
15.1.3数据模型407
15.2问卷编辑模块开发410
15.2.1问题选择组件410
15.2.2问题组件414
15.2.3问卷组件425
15.2.4问卷服务431
15.2.5问卷大纲组件438
15.3小结441
16我的问卷模块442
16.1问卷列表443
16.1.1问卷列表项443
16.1.2显示问卷列表445
16.1.3显示问卷详情447
16.2问卷操作449
16.2.1发布后的问卷页面450
16.2.2问卷操作组件453
16.3小结456
17用户管理模块457
17.1开发简单注册页458
17.2表单控件组件460
17.2.1定义表单控件460
17.2.2校验表单控件461
17.2.3表单安全464
17.3用户注册功能开发465
17.3.1用户注册服务465
17.3.2组件的逻辑466
17.3.3注册接口开发469
17.4权限管理470
17.5小结473
18项目构建和最佳实践475
18.1项目构建475
18.1.1代码质量检查475
18.1.2测试476
18.1.3打包478
18.1.4容器化479
18.2最佳实践479
18.2.1单一职责480
18.2.2命名约定480
18.2.3编码约定483
18.2.4Angular模块约定487
18.2.5组件相关约定487
18.2.6指令相关约定489
18.2.7服务相关约定490
18.2.8其他491
18.3小结492
第四部分延伸篇
19移动开发框架:ionic介绍与实战494
19.1移动开发494
19.1.1背景介绍494
19.1.2四种开发模式495
19.1.3技术选型495
19.2ionic平台介绍496
19.2.1概览496
19.2.2Cordova498
19.2.3环境搭建499
19.2.4组件开发501
19.2.5路由和导航503
19.3ionicNative507
19.3.1插件介绍507
19.3.2插件使用508
19.3.3插件开发509
19.4样式和主题509
19.4.1平台样式509
19.4.2主题511
19.4.3全局变量512
19.4.4工具属性513
19.4.5Iconfont514
19.5ionicCLI515
19.6通讯录实例518
19.6.1项目搭建519
19.6.2主页面520
19.7小结525
20服务端渲染527
20.1概述527
20.2客户端渲染的局限性528
20.3服务端渲染的局限性529
20.4AngularUniversal介绍531
20.5将通讯录例子改造成AngularUniversal的方式533
20.6服务端渲染的进阶实践540
20.6.1服务端数据的同步541
20.6.2使用依赖注入解决环境差异544
20.6.3使用Preboot解决事件脱节546
20.7小结549
前言
2016年9月15日,Angular横空出世。鉴于Angular1.x的巨大成功,加上Angular自身超前而颠覆式的设计,使其市场关注度水涨船高。《揭秘Angular(第2版)》是一本帮助读者对Angular进行快速了解、深入熟悉并用其进行实战开发的书籍。
《揭秘Angular(第2版)》概述
《揭秘Angular(第2版)》主要分为入门篇、深入篇、实战篇和延伸篇四大部分,总共20个章节。
第一部分:从第1章到第4章,主要讲述整个前端发展史的演进;Angular的发展历程、核心概念及周边工具的简单介绍;快速熟悉Angular官方推荐的开发语言TypeScript;最后以一个通讯录示例介绍如何搭建开发环境并快速上手Angular。
第二部分:从第5章到第12章,主要围绕通讯录示例深入讲解Angular的相关知识点,包括Angular的运行机理与整体架构介绍、组件与变化监测相关内容、模板与管道、指令的总体介绍、服务与响应式编程RxJS、强大的依赖注入、灵活高可用的路由机制等,最后介绍了在项目开发中与测试相关的内容。
第三部分:从第13章到第18章,主要以实现一个问卷调查系统为目标,阐述如何使用Angular进行项目实战。主要内容包括项目背景介绍、开发环境的搭建、整体技术架构分析、用户管理及问卷编辑等页面的实现细节等,最后讲解了项目的构建流程及最佳实践。
第四部分:从第19章到第20章,主要讲述Angular的两个延伸应用,每个应用均包含完整的实战例子。其中第19章讲解Angular的混合应用开发,即ionic;而第20章则讲述Angular的服务端渲染技术。
谁适合这《揭秘Angular(第2版)》
《揭秘Angular(第2版)》的主要目标读者是有一定JavaScript开发能力的新人,有Angular1.x相关经验的开发者,有Java、C#等后端语言编程经验的人,或者想通过《揭秘Angular(第2版)》快速了解Angular掌握更多新鲜理念的资深工程师等。
如何阅读此书
《揭秘Angular(第2版)》基于Angular5.0版本进行讲解。
《揭秘Angular(第2版)》按照由低到高的难度变化思路进行撰写。第一部分适合刚接触Angular的读者进行细致的阅读,如果已有相关基础或比较熟悉Angular的读者可以跳过第一部分,直接学习第二部分深入理解或者第三部分项目实战。
《揭秘Angular(第2版)》的插图采用统一的绘图风格,以手绘风格的形式表现出来,力求简洁,如遇部分难懂之处可配合上下文进行解读。
《揭秘Angular(第2版)》包含诸多代码段,这些代码段可分为两类,一类是比较完整独立的,跟着编写并能看到运行效果的示例代码;另一类是辅助学习的代码段,以介绍概念知识点为主,力求减少不相关代码的干扰,通常只截取最核心的片段,并以伴有省略号的形式出现。《揭秘Angular(第2版)》涉及的三个主要示例的源码也已通过GitHub开源,网址如下所示,感兴趣的读者可以下载运行,辅助对《揭秘Angular(第2版)》相关知识的学习理解。
?HelloWorld例子:https://github.com/angular-programming/angular-hello-world
?通讯录例子:https://github.com/angular-programming/angular-contacts-demo
?问卷调查系统:https://github.com/angular-programming/angular-questionnaire
?ionic例子:https://github.com/angular-programming/ionic-contacts-demo
为了加强对相关知识点的理解,《揭秘Angular(第2版)》也加入了一些旁注,对内容进行相关补充。部分较为深入但不常用的知识点,将以扩展阅读或者批注的形式展现。
勘误和支持
由于笔者水平有限,又是团体作战,且Angular更新迭代比较快,加上书籍撰写的时间比较仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以把书中发现的问题或建议通过在GitHub上提Issue的方式反馈给我们,网址如下所示,我们会尽快回复大家的疑问,并依据收集的信息整理修正。
https://github.com/angular-programming/issues/issues
读者也可登录博文视点官网http://www.broadview.com.cn/34272下载《揭秘Angular(第2版)》代码或提交勘误信息。一旦勘误信息被作者或编辑确认,即可获得博文视点奖励积分,可用于兑换电子书。读者可以随时浏览图书页面,查看已发布的勘误信息。
致谢
首先,感谢电子工业出版社的张春雨、刘佳禾等编辑及排版白涛老师,自始至终给予我们强有力的帮助和支持。如果当时没有春雨老师的邀请,我们可能就不会有写书的冲动,也就不会有《揭秘Angular(第2版)》的诞生了。
其次,要感谢广发证券互联网金融技术团队的全体小伙伴们。《揭秘Angular(第2版)》是整个团队(参与写作的人数多达22人)在繁忙工作之余利用琐碎的业余时间完成的,其难度不亚于一次大项目的协作,如果没有大家的紧密协作和坚持不懈,这《揭秘Angular(第2版)》也是不可能完成的,所以非常感谢以下作者的辛苦付出。
章节作者
整体内容审校吴炳杰、张淼、高海浪、汤桂川、李仲辉、闫学凯、唐明、梁景湛
第1章前端风云汤桂川
第2章Angular简介高海浪
第3章TypeScript入门张淼、姚云萍、郭力恒
第4章快速入门钱骞、吴炳杰
第5章Angular架构总览李仲辉
第6章组件梁景湛、唐明
第7章模板黄晓婷、袁野
第8章指令龚麒
第9章服务与RxJS邓玉龙、吴冠鹏
第10章依赖注入张淼、姚云萍
第11章路由李远、郭伟
第12章测试李泽扬
第13章问卷调查系统简介闫学凯、王扬
第14章项目起步闫学凯
第15章问卷编辑模块闫学凯
第16章我的问卷模块闫学凯
第17章用户管理模块杨宾生
第18章项目构建和最佳实践王扬
第19章移动开发框架:ionic介绍与实战张淼
第20章服务端渲染梁景湛、唐明
推荐序1
让时间倒推至2013年年初。
这一年,笔者从科技外企、互联网界投入到本土金融机构,在所谓“互联网金融”的喧嚣中,开始招募与建设一个金融科技的研发组织。此刻正面临着一个个此前职业生涯所未遇的、因行业文化与组织管理差异而需重新学习适应的小“冲击”。其中印象*深的一个,无疑是在招聘过程中感受到来自互联网大企业的工程师对传统金融业IT的一定程度上的“蔑视”——通常在面试过程中面试者*正面的反应莫过于“嗬,没想到券商还有这样的技术”,更多的面试者则是把金融机构的前端技术想象停留在VisualBasic、JQuery阶段。传统金融机构,对于年轻的互联网技术人,很可能是恐龙般的存在。想想现在有多少年轻人从来不去银行营业部办业务,甚至从来不去商场购物?大部分人对于金融机构的印象,深受该机构的网站、手机App的影响。有很多面试者在面试中吐槽金融行业整体软件服务糟糕的用户体验,把面试变成一个尴尬的“用户反馈”渠道。这就是个人在转换行业后遭遇的难忘经历。
当然,这种经历也和我们“不自量力”,自找不痛快有关——作为“传统”IT组织非得去“忽悠”*级互联网企业的骄傲的牛人们加盟……可是,事实上很多传统行业的前端技术(以及很多其他技术)都没有与时俱进,如果我们不想办法建立起强悍的技术团队,采用更前沿、更领先的技术弯道超车,就永远无法解决用户体验糟糕的问题,永远难以改变在技术界留下的“技术落后”的负面印象,这些负分会让招募技术牛人更加困难,因为有追求的工程师都希望和一流的团队合作,开发有个人成就感的一流的技术应用。这是一个恶性循环,如果不打破它,我们既做不出好的产品,也招募不到好的工程师。
我们的办法是,采用“激进”的技术“破冰”。在2013年,类似于Angular、Node.js、MongoDB、Docker等这些技术,恐怕在大部分互联网公司里依然属于较为少用的技术,更遑论以稳定可靠为导向的、技术路线保守的金融界。采用这些技术开发交易额动辄以“亿元”为单位的金融应用,可以称得上“激进”。可是我们有一个论调,就是:对于新兴技术有高度热情甚至“疯狂”的工程师,往往是技术比较强悍的工程师,他们驾驭故障、问题的能力,往往又是比较强的;相比之下,技术套路保守、比较求稳的团队,则不一定以技术见长。这两者权衡之下,我们决定冒一点风险,通过更前沿的技术吸引有技术热情的互联网人加盟,给他们玩新技术的自由,同时也考验他们填技术“坑”的能力。当然,这些技术在硅谷诞生已有时日,已经形成庞大的海外社区,我们并不是一拍脑袋为了“前沿”而“前沿”的,该做的论证依然需要严谨地做。*重要的一点是,我们首先应该纠正“盲目”的态度——对于任何新鲜技术,避免因为自己的不熟悉、缺乏调研就一概而论地斥之为“不成熟”,事实上,“没有调查研究就没有发言权”,抱着开放的心态深入了解新技术,会发现它们中有很多是从根本上经得起“思想实验”、符合逻辑、符合未来发展方向的。但我们可以看到,很多企业尤其是非科技行业的机构,往往对于任何新兴技术没有深入的、逻辑的、严谨科学的分析,而是简单粗暴地以技术存在的时间“年龄”作为采用与否的判断标准,这是令人遗憾的。
从2013年起,类似于CoffeeScript、TypeScript、ES6/7、Promise、Meteor.js、Yeoman、Ember.js、Babel、Ionic、RxJS、Vows/BDD等就出现在我们的前端技术雷达屏幕里,WebComponent/Polymer甚至是我们招聘的试题。我们既是Isomorphic(全栈同构)App的践行者,也很可能是金融界*早*彻底大规模使用MEAN(MongoDB、Express、Angular、Node.js)架构的团队。我们的股票交易终端证明了HTML5/React/Electron技术可以成就“dead-serious”的严肃金融应用,我们的电商平台则以数百亿级的理财产品销售量,*有说服力地充当了Angular/Node.js在金融业的所谓“成功案例”……
时间回到2016年。
我们终于建立起一个新型金融科技研发组织,崇尚Reactive的架构风格与技术工具,时刻紧盯技术前沿,吸收大量跨界工程师,向传统IT注入了互联网技术基因与文化。《揭秘Angular(第2版)》的作者们,正是这个组织里有代表性的一群,他们和试验性的新技术一起成长,经受金融业对技术尝试带来的不确定性的零容忍,承担在巨额交易量下技术创新的高风险,持续学习并学以致用……这不仅需要勇气,也需要情怀,我以他们为荣。
现实中,在垂直行业具备勇气与情怀的IT恐怕是不多的,原因之一是因为IT作为企业内的“乙方”和成本中心,永远被业务线驱动而疲于奔命,无暇顾及新技术、新文化;原因二是因为以行业业务为主导的企业往往并不懂技术,也不理解技术的重要性,一位工程师选择用JQuery还是Angular开发前端,并没有人关心,而且为了“安全稳妥”起见,往往做出“保守”的选择。情怀和勇气,是垂直行业IT的稀罕物。
但是在一个高度同质化的行业如证券业,技术就是一个差异化竞争的决定因素,新的函数语言、新的框架、新的开发工具……差异化和技术领先,体现在这些技术细节的追求里。
《揭秘Angular(第2版)》的作者们,是这些技术细节的追求者。这一次,他们利用自己每天“正常加班”之外少得可怜的个人业余时间,凭着极大的耐心、坚持、团队协作,把其中一个细节——也就是对Angular的经验与理解,完全原创性地分享给读者。编写这《揭秘Angular(第2版)》,既是历时七八个月的凝聚团队的工程项目,也是年轻队员们职业生涯里一次难忘的体验,theymakeadifference——首要是为了他们自己,但希望也能为你们,前端技术的爱好者们!
谢谢。
梁启鸿
原董事总经理@金融科技研发
广发证券信息技术部
推荐序2
Angular’sdevelopercommunityinChinaisactiveandthriving.ThiscomprehensivenewbookisthefirstoriginallyauthoredbookonAngularwritteninChineseforaChineseaudience.TheauthorandhisteamiswellknowninthelocalAngularcommunityforhiscontributions.WethankhimandhisteamfortheirworktowardsmakingAngularevenmorefriendlytodevelopersinChinaandhopethisbookwillbehelpful.
在中国,Angular开发者社区非常活跃并且正在蓬勃发展。《揭秘Angular(第2版)》作者和其所在的广发证券互联网金融技术团队编写的这本新书内容全面,并且是面向中国读者的*一本中文原创书籍。《揭秘Angular(第2版)》作者所在团队所做出的贡献在当地的Angular社区广为人知。广发证券互联网金融技术团队的工作让Angular对中国开发者更加友好,我们非常感谢他们所做出的贡献,并真诚希望他们的这《揭秘Angular(第2版)》能给大家带来帮助。
NaomiBlack
TechnicalProgramManagerandLead
Angular
推荐序3
作为谷歌所支持和投资推广的一个跨平台的开源技术,Angular在中国开发者中获得了越来越多的关注和应用。根据我们统计到的数据,Angular*1版已经在大量的中国企业中获得了应用,其中有很多大型企业,也有小型的创业团队。
《揭秘Angular(第2版)》作者所在的广发证券互联网金融技术团队就是一个将Angular付诸实践的先行者。不仅如此,广发证券互联网金融技术团队还快速升级了Angular,创造了中国企业中采纳Angular*早的实践先例之一。
我特别高兴看到《揭秘Angular(第2版)》作者和其所在的团队能联合撰写这《揭秘Angular(第2版)》,他们把使用Angular的开发经验向业界进行了分享,同时也详细介绍了Angular的各项特性。他们的实战经验一定能帮助更多开发者快速理解使用Angular进行开发的价值,看到*新版Angular的优势。
我相信广发证券互联网金融技术团队在《揭秘Angular(第2版)》中的介绍,能帮助读者更方便地学习Angular。他们丰富的经验和*佳实践,能鼓舞你在你的企业中使用Angular的信心。
我推荐这本体现了开源和分享精神的书!
预祝你有个愉快的学习经历,并且能尽快上手Angular!
栾跃(BillLuan)
谷歌开发技术推广部大中华区主管
推荐序4
随着网络技术的突飞猛进,Web前端正在变得空前强大和复杂,而大型JavaScript项目也遍地开花。TypeScript把在其他语言中身经百战的类型系统引入到JavaScript,从而使得大型JavaScript项目开发体验脱胎换骨。经过长时间的积累,TypeScript周边的生态环境也趋于成熟。为了紧跟JavaScript社区的变化,这门完全开源的语言时刻关注着社区的反馈。就在过去的一年多里,TypeScript不断有重大版本更新,以解决社区中所看到的新需求。
而自从2.0版本起,完全采用了TypeScript开发的Angular,又将TypeScript的优点发挥得淋漓尽致。自从2014年Angular团队和TypeScript团队开始合作以来,这个跨公司的组合就一直迸发着火花。Angular吸取了TypeScript的高效和完备的工具支持,又将TypeScript的类型系统巧妙地应用在依赖注入等核心功能上。TypeScript也借助于Angular的流行,被更多的人所熟知。这健康而紧密的合作会使Angular和TypeScript越来越有竞争力,*终让开发者受益。
《揭秘Angular(第2版)》作者广发证券互联网金融技术团队是国内Angular社区的先行者,他们结合自己生产实战中的经验,阐述了自己对于TypeScript和Angular的独特理解,值得一读。中文资料的缺乏一直是TypeScript在国内推广的一大障碍;而《揭秘Angular(第2版)》TypeScript篇章的专门介绍,以及其结合具体场景的诸多实例,相信会对很多开发者有所帮助。预祝此书帮助你开始一段愉快的学习旅程!
李正博
TypeScript团队成员









