内容简介

Facebook的开源框架React.js,基于VirtualDOM重新定义了用户界面的开发方式,彻底革新了大家对前端框架的认识,将PHP风格的开发方式迁移到客户端应用开发。其优势在于可以与各种类库、框架搭配使用。《React(第2版):引领未来的用户界面开发框架》由多位一线专家精心撰写,采用全程实例介绍和剖析了React.js的方方面面,适合广大前端开发者、设计人员,以及所有对未来技术趋势感兴趣者阅读。《React(第2版):引领未来的用户界面开发框架》前版作为React首作推出之后,React生态继续蓬勃发展,技术及社区都在不断推陈出新。《React(第2版):引领未来的用户界面开发框架》诸位专家作者适时推出新版,全面更新示例,用ES6重写代码,摒弃社区弃用范式,新增无状态组件、不可变数据、Redux等热点内容。阅读《React(第2版):引领未来的用户界面开发框架》,不但可以夯实React开发基础,更能全方位紧跟整个React生态!

作者简介

寸志,资深前端架构师,陆金所前端团队Leader。范洪春,阿里巴巴(中国)网络技术有限公司前端工程师。杨森,阿里巴巴(中国)网络技术有限公司前端工程师。题叶,饿了么资深前端工程师。《React(第2版):引领未来的用户界面开发框架》由一个团队编写而成,这个团队的成员都是一些经验丰富且专注于JavaScript的开发者。__eol__TomHallett是一位高级Ruby和JavaScript工程师,在Tout.com工作(Tout.com是一个实时视频平台,办公地点在旧金山)。他是jasmine-react的作者,jasmine-react是一个开源的类库,旨在帮助开发者使用测试框架Jasmine测试React应用程序。在Twitter(@tommyhallett)和Github(@tommyh)上都可以找到他。他的爱好是打水球,以及与妻子和儿子待在一起。__eol__RichardFeldman是旧金山教育科技公司NoRedInk的前端工程师。他是一个函数式编程爱好者,会议发言人,还是seamlessimmutable的作者。seamless-immutable是一个开源类库,可以提供不可变的数据结构,向后兼容普通的JavaScript对象和数组。Richard在Twitter和Github上都叫@rtfeldman。__eol__SimonHøjberg是一个高级UI工程师,在罗德岛普罗维登斯市的Swipely公司工作。他是普罗维登斯市线下JS见面会的核心组织者,之前还是波士顿创业学院的JavaScript讲师。他一直在使用JavaScript开发功能性的用户界面,也会开发一些像cssarrowplease.com这样的业余项目。Simon的Twitter是@shojberg。__eol__KarlMikkelsen是LockedOn的一位高级PHP和JavaScript工程师,工作是开发外观漂亮且功能强大的房地产软件。Karl对新技术充满热情,喜欢学习以不同的方式做事。如果你在网上(http://karlmikko.com)找不到他,那他很可能在和妻子攀岩或者在喝咖啡。__eol__JonBeebe在DaveRamsey的数字开发团队里开发应用,专注于一些面向用户的技术,例如Web和iOS。在这之前,他开发过PHPWeb服务,也为FinalCutPro和Motion写过插件。他以能够把艺术和代码结合到一起为乐。他的网名是@bejonbee。他自诩是一个热衷阅读的人,喜欢摄影,并且以超出妻子的日常期望为自己的目标。__eol__FrankieBagnardi是一位高级前端工程师,为多种不同的客户端创造用户体验。在业余时间里,他会在StackOverflow(FakeRainBrigand)和IRC(GreenJello)上回答问题,或者开发一些小项目。你可以通过f.bagnardi@gmail.com联系他。

目录

推荐序1III
推荐序2V
推荐序3VII
前言IX
第1章?React简介1
背景介绍1
React(第2版):引领未来的用户界面开发框架》概览3
Component的创建和复合3
进阶5
React工具6
React实践6
第2章?JSX8
什么是JSX9
使用JSX的好处10
更加熟悉10
更加语义化10
更加直观11
关注点分离12
复合组件12
定义一个自定义组件12
使用动态值13
子节点14
JSX与HTML有何不同16
属性16
条件判断17
非DOM属性19
事件21
注释22
特殊属性23
样式23
没有JSX的React24
创建React元素24
延伸阅读及参考引用25
JSX官方规范25
第3章?组件的生命周期26
生命周期方法26
实例化27
存在期27
销毁&清理期27
实例化27
componentWillMount28
render28
componentDidMount29
存在期30
componentWillReceiveProps30
shouldComponentUpdate30
componentWillUpdate31
componentDidUpdate31
销毁&清理期32
componentWillUnmount32
反模式:把计算后的值赋给state32
总结33
第4章?数据流34
Props35
PropTypes36
defaultProps37
State37
放在state和props的各是哪些部分40
无状态的函数式组件40
总结41
第5章?事件处理42
绑定事件处理器43
事件和状态44
根据状态进行渲染44
更新状态45
状态没有“更新”!46
事件对象47
总结48
第6章?组件的复合49
扩展HTML50
组件复合的例子50
组装HTML51
追踪状态53
整合到父组件当中54
父组件与子组件的关系56
总结59
第7章?高阶组件和Mixins60
简单的例子60
常见使用场景63
总结63
第8章?DOM操作64
访问受控的DOM节点65
在组件内部查找DOM节点66
整合非React类库67
侵入式插件70
总结72
第9章?表单73
无约束的组件74
约束组件76
表单事件78
Label79
文本框和Select79
复选框和单选框82
表单元素的name属性84
多个表单元素与change处理器86
自定义表单组件89
Focus93
可用性93
把要求传达清楚94
不断地反馈94
迅速响应94
符合用户的预期95
可访问95
减少用户的输入96
总结97
第10章?动画98
CSS渐变组99
给渐变class添加样式99
渐变生命周期100
使用渐变组的隐患101
间隔渲染101
使用requestAnimationFrame实现间隔渲染102
使用setTimeout实现间隔渲染104
弹簧动画105
总结106
第11章?性能优化107
shouldComponentUpdate107
键(key)109
总结111
第12章?服务端渲染112
渲染函数113
React.renderToString113
React.renderToStaticMarkup114
用React.renderToString还是用React.renderToStaticMarkup114
服务端组件生命周期115
设计组件116
异步状态118
同构路由121
单例、实例及上下文121
总结122
第13章?开发工具123
构建工具123
Browserify124
建立一个Browserify项目124
对代码做出修改126
Watchify127
构建127
Webpack127
Webpack与React128
调试工具131
基础工具131
总结133
第14章?测试134
上手135
测试的类型135
工具136
使用Jest和Enzyme测试React组件136
编写组件的内容的断言136
测试组件的方法和DOM事件143
编写子组件的断言144
总结147
第15章?架构模式148
路由149
react-router150
Flux152
数据流152
Flux各个部分153
Dispatcher153
Action154
Store154
控制视图155
管理多个Store156
总结161
第16章?不可变性162
性能优势162
性能消耗163
架构优势164
使用ImmutabilityHelpersAddon164
使用seamless-immutable166
使用Immutable.js167
Immutable.Map168
Immutable.Vector168
总结169
第17章?其他使用场景170
桌面应用171
游戏172
电子邮件177
绘图183
总结186

其他推荐