内容简介
Facebook 的开源框架 React.js,基于 Virtual DOM 重新定义了用户界面的开发方式,彻底革新了大家对前端框架的认识,将PHP风格的开发方式迁移到客户端应用开发。其优势在于可以与各种类库、框架搭配使用。本书由多位一线专家精心撰写,采用全程实例介绍和剖析了 React.js 的方方面面,适合广大前端开发者、设计人员,以及所有对未来技术趋势感兴趣者阅读。本书前版作为 React 首作推出之后,React 生态继续蓬勃发展,技术及社区都在不断推陈出新。本书诸位专家作者适时推出新版,全面更新示例,用 ES6 重写代码,摒弃社区弃用范式,新增无状态组件、不可变数据、Redux 等热点内容。阅读本书,不但可以夯实 React 开发基础,更能全方位紧跟整个 React 生态!
作者简介
寸志,资深前端架构师,陆金所前端团队Leader。范洪春,阿里巴巴(中国)网络技术有限公司前端工程师。 杨森,阿里巴巴(中国)网络技术有限公司前端工程师。 题叶,饿了么资深前端工程师。 本书由一个团队编写而成,这个团队的成员都是一些经验丰富且专注于JavaScript 的开发者。 __eol__Tom Hallett 是一位高级Ruby 和JavaScript 工程师,在Tout.com 工作(Tout.com 是一个实时视频平台,办公地点在旧金山)。他是jasmine-react 的作者,jasmine-react 是一个开源的类库,旨在帮助开发者使用测试框架Jasmine 测试React 应用程序。在Twitter(@tommyhallett)和Github(@tommyh)上都可以找到他。他的爱好是打水球,以及与妻子和儿子待在一起。 __eol__Richard Feldman 是旧金山教育科技公司NoRedInk 的前端工程师。他是一个函数式编程爱好者,会议发言人,还是seamlessimmutable的作者。seamless-immutable 是一个开源类库,可以提供不可变的数据结构,向后兼容普通的JavaScript 对象和数组。Richard 在Twitter 和Github 上都叫@rtfeldman。 __eol__Simon Højberg 是一个高级UI 工程师,在罗德岛普罗维登斯市的Swipely 公司工作。他是普罗维登斯市线下JS 见面会的核心组织者,之前还是波士顿创业学院的JavaScript 讲师。他一直在使用JavaScript 开发功能性的用户界面,也会开发一些像cssarrowplease.com 这样的业余项目。Simon 的Twitter 是@shojberg。 __eol__Karl Mikkelsen 是LockedOn 的一位高级PHP 和JavaScript 工程师,工作是开发外观漂亮且功能强大的房地产软件。Karl 对新技术充满热情,喜欢学习以不同的方式做事。如果你在网上(http://karlmikko.com)找不到他,那他很可能在和妻子攀岩或者在喝咖啡。 __eol__Jon Beebe 在Dave Ramsey 的数字开发团队里开发应用,专注于一些面向用户的技术,例如Web 和iOS。在这之前,他开发过PHPWeb 服务,也为Final Cut Pro 和Motion 写过插件。他以能够把艺术和代码结合到一起为乐。他的网名是@bejonbee。他自诩是一个热衷阅读的人,喜欢摄影,并且以超出妻子的日常期望为自己的目标。 __eol__Frankie Bagnardi 是一位高级前端工程师,为多种不同的客户端创造用户体验。在业余时间里,他会在StackOverflow(FakeRainBrigand)和IRC(GreenJello)上回答问题,或者开发一些小项目。你可以通过f.bagnardi@gmail.com 联系他。
目录
推荐序1 III
推荐序2 V
推荐序3 VII
前言 IX
第 1 章?React 简介 1
背景介绍 1
本书概览 3
Component的创建和复合 3
进阶 5
React工具 6
React实践 6
第 2 章?JSX 8
什么是JSX 9
使用JSX的好处 10
更加熟悉 10
更加语义化 10
更加直观 11
关注点分离 12
复合组件 12
定义一个自定义组件 12
使用动态值 13
子节点 14
JSX与HTML有何不同 16
属性 16
条件判断 17
非DOM属性 19
事件 21
注释 22
特殊属性 23
样式 23
没有JSX的React 24
创建React元素 24
延伸阅读及参考引用 25
JSX官方规范 25
第 3 章?组件的生命周期 26
生命周期方法 26
实例化 27
存在期 27
销毁&清理期 27
实例化 27
componentWillMount 28
render 28
componentDidMount 29
存在期 30
componentWillReceiveProps 30
shouldComponentUpdate 30
componentWillUpdate 31
componentDidUpdate 31
销毁&清理期 32
componentWillUnmount 32
反模式:把计算后的值赋给state 32
总结 33
第 4 章?数据流 34
Props 35
PropTypes 36
defaultProps 37
State 37
放在state和props的各是哪些部分 40
无状态的函数式组件 40
总结 41
第 5 章?事件处理 42
绑定事件处理器 43
事件和状态 44
根据状态进行渲染 44
更新状态 45
状态没有“更新”! 46
事件对象 47
总结 48
第 6 章?组件的复合 49
扩展HTML 50
组件复合的例子 50
组装HTML 51
追踪状态 53
整合到父组件当中 54
父组件与子组件的关系 56
总结 59
第 7 章?高阶组件和Mixins 60
简单的例子 60
常见使用场景 63
总结 63
第 8 章?DOM操作 64
访问受控的DOM节点 65
在组件内部查找DOM节点 66
整合非React类库 67
侵入式插件 70
总结 72
第 9 章?表单 73
无约束的组件 74
约束组件 76
表单事件 78
Label 79
文本框和 Select 79
复选框和单选框 82
表单元素的name属性 84
多个表单元素与change处理器 86
自定义表单组件 89
Focus 93
可用性 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
shouldComponentUpdate 107
键(key) 109
总结 111
第 12 章?服务端渲染 112
渲染函数 113
React.renderToString 113
React.renderToStaticMarkup 114
用React.renderToString还是用React.renderToStaticMarkup 114
服务端组件生命周期 115
设计组件 116
异步状态 118
同构路由 121
单例、实例及上下文 121
总结 122
第 13 章?开发工具 123
构建工具 123
Browserify 124
建立一个Browserify项目 124
对代码做出修改 126
Watchify 127
构建 127
Webpack 127
Webpack与React 128
调试工具 131
基础工具 131
总结 133
第 14 章?测试 134
上手 135
测试的类型 135
工具 136
使用Jest和Enzyme测试React组件 136
编写组件的内容的断言 136
测试组件的方法和DOM事件 143
编写子组件的断言 144
总结 147
第 15 章?架构模式 148
路由 149
react-router 150
Flux 152
数据流 152
Flux各个部分 153
Dispatcher 153
Action 154
Store 154
控制视图 155
管理多个Store 156
总结 161
第 16 章?不可变性 162
性能优势 162
性能消耗 163
架构优势 164
使用Immutability Helpers Addon 164
使用seamless-immutable 166
使用Immutable.js 167
Immutable.Map 168
Immutable.Vector 168
总结 169
第 17 章?其他使用场景 170
桌面应用 171
游戏 172
电子邮件 177
绘图 183
总结 186
React(第2版):引领未来的用户界面开发框架 epub pdf mobi txt 电子书 下载 2024
React(第2版):引领未来的用户界面开发框架 下载 epub mobi pdf txt 电子书 2024