Web开发经典丛书 快速上手React编程
作者: [美]Azat Mardan
出版时间: 2018年版
丛编项:Web开发经典丛书
内容简介
《快速上手React编程》面向希望快速上手React.js进行Web开发的读者,借助精心挑选和详细解释的实例,帮助读者使用现有的JavaScript和Web开发技能学习React开发。在学习Web组件、表单和数据的过程中,还将探索许多不同的项目。 主要特点: 掌握React基础 使用数据和路由构建完整的Web应用 测试组件 优化React应用。
目录
第Ⅰ部分 React基础
第1章 初积React 3
1.1 什么是React 4
1.2 React解决的问题 5
1.3 使用React的好处 6
1.3.1 简单性 6
1.3.2 速度和可测试性 11
1.3.3 生态和社区 12
1.4 React的缺点 13
1.5 React如何与Web应用集成 13
1.5.1 React类库和渲染目标 14
1.5.2 单页面应用和React 15
1.5.3 React技术栈 17
1.6 第一个React项目:
Hello World 18
1.7 测验 21
1.8 小结 21
1.9 测验答案 22
第2章 React起步 23
2.1 内嵌元素 23
2.2 创建组件类 26
2.3 属性 29
2.4 测验 34
2.5 小结 34
2.6 测验答案 34
第3章 JSX 35
3.1 JSX是什么?它有什么优点 36
3.2 理解JSX 38
3.2.1 使用JSX创建元素 39
3.2.2 在组件中使用JSX 40
3.2.3 在JSX中输出变量 41
3.2.4 在JSX中使用属性 42
3.2.5 创建React组件的方法 46
3.2.6 JSX中的if/else 47
3.2.7 JSX中的注释 51
3.3 使用Babel设置JSX转译器 51
3.4 React和JSX陷阱 55
3.4.1 特殊字符 56
3.4.2 data-属性 56
3.4.3 style属性 57
3.4.4 class和for 58
3.4.5 布尔类型的属性值 58
3.5 测验 59
3.6 小结 59
3.7 测验答案 59
第4章 与状态交互 61
4.1 什么是React组件的状态 62
4.2 使用状态 63
4.2.1 访问状态 63
4.2.2 设置初始状态 65
4.2.3 更新状态 67
4.3 状态和属性 70
4.4 无状态组件 71
4.5 有状态组件和无状态组件 73
4.6 测验 77
4.7 小结 77
4.8 测验答案 78
第5章 React组件生命周期 79
5.1 React组件生命周期事件的
全景视图 80
5.2 事件的分类 80
5.3 实现生命周期事件 82
5.4 执行所有事件 84
5.5 挂载事件 86
5.5.1 componentWillMount( ) 87
5.5.2 componentDidMount( ) 87
5.6 更新事件 90
5.6.1 componentWillReceiveProps
(newProps) 90
5.6.2 shouldComponentUpdate( ) 91
5.6.3 componentWillUpdate( ) 91
5.6.4 componentDidUpdate() 92
5.7 卸载事件 92
5.8 一个简单示例 92
5.9 测验 95
5.10 小结 95
5.11 测验答案 96
第6章 React事件处理 97
6.1 在React中处理DOM事件 97
6.1.1 捕获和冒泡阶段 100
6.1.2 React事件的内幕 102
6.1.3 使用ReactSyntheticEvent
事件对象 105
6.1.4 使用事件和状态 108
6.1.5 传递事件处理程序和
属性 109
6.1.6 组件通信 112
6.2 响应React不支持的DOM
事件 113
6.3 React和其他库的集成:
jQuery UI事件 116
6.3.1 集成按钮 116
6.3.2 集成标签 118
6.4 测验 119
6.5 小结 119
6.6 测验答案 120
第7章 在React中使用表单 121
7.1 在React中使用表单的最佳
实践 121
7.1.1 在React中定义表单及
响应事件 123
7.1.2 定义表单元素 125
7.1.3 捕获表单变更 130
7.1.4 账户字段示例 132
7.2 使用表单的其他方式 134
7.2.1 可捕获变更的非受控元素 135
7.2.2 不捕获变更的非受控元素 136
7.2.3 使用引用获取值 137
7.2.4 默认值 139
7.3 测验 140
7.4 小结 141
7.5 测验答案 141
第8章 扩展React组件 143
8.1 组件中的默认属性 144
8.2 React属性类型和验证 145
8.3 渲染子组件 152
8.4 创建React高阶组件以实现
代码复用 154
8.4.1 使用displayName:用以区分
父组件与子组件 156
8.4.2 使用扩展运算符:传递所有
属性 157
8.4.3 使用高阶组件 158
8.5 最佳实践:展示组件与容器
组件 160
8.6 测验 161
8.7 小结 161
8.8 测验答案 162
第9章 项目:菜单组件 163
9.1 项目结构和脚手架 164
9.2 不使用JSX构建菜单 165
9.2.1 Menu组件 165
9.2.2 Link组件 168
9.2.3 运行菜单组件 170
9.3 在JSX中构建菜单 171
9.3.1 重构Menu组件 172
9.3.2 重构Link组件 174
9.3.3 运行JSX项目 175
9.4 测验 175
9.5 小结 176
第10章 项目:Tooltip组件 177
10.1 项目结构和脚手架 178
10.2 Tooltip组件 179
10.2.1 toggle( )函数 180
10.2.2 render( )函数 181
10.3 运行Tooltip组件 183
10.4 测验 184
10.5 小结 184
第11章 项目:Timer组件 185
11.1 项目结构和脚手架 186
11.2 应用架构 187
11.3 TimerWrapper组件 189
11.4 Timer组件 193
11.5 Button组件 194
11.6 运行Timer组件 196
11.7 测验 196
11.8 小结 197
第Ⅱ部分 React架构
第12章 Webpack构建工具 201
12.1 Webpack的作用 201
12.2 添加Webpack到项目中 203
12.2.1 安装Webpack及其
依赖 204
12.2.2 配置Webpack 205
12.3 模块化代码 207
12.4 运行Webpack并测试构建 208
12.5 热模块替换 210
12.5.1 配置HMR 211
12.5.2 热模块替换实践 214
12.6 测验 216
12.7 小结 216
12.8 测验答案 216
第13章 React路由 217
13.1 从零开始实现路由 218
13.1.1 建立项目 219
13.1.2 在app.jsx中创建路由
映射 220
13.1.3 在router.jsx中创建
Router组件 221
13.2 React Router 222
13.2.1 React Router的JSX
样式 225
13.2.2 哈希记录 227
13.2.3 浏览器记录 227
13.2.4 使用Webpack安装
React Router开发环境 228
13.2.5 创建布局组件 230
13.3 React Router特性 233
13.3.1 使用withRouter高阶组件
访问路由器 234
13.3.2 以编程方式导航 235
13.3.3 URL参数和其他路由
数据 235
13.3.4 在React Router中传递
属性 236
13.4 使用Backbone路由 237
13.5 测验 240
13.6 小结 241
13.7 测验答案 241
第14章 使用Redux处理数据 243
14.1 React支持单向数据流 244
14.2 了解Flux数据体系结构 246
14.3 使用Redux数据类库 247
14.3.1 用Redux创建依照Netflix
的应用 249
14.3.2 依赖和配置 250
14.3.3 启用Redux 253
14.3.4 路由 253
14.3.5 合并reducer 254
14.3.6 电影的reducer 255
14.3.7 操作 258
14.3.8 操作创建器 259
14.3.9 将组件连接到数据
存储 260
14.3.10 分发操作 262
14.3.11 将操作创建器传递到
组件属性中 263
14.3.12 运行Netflix的克隆版 267
14.3.13 Redux总结 268
14.4 测验 268
14.5 小结 269
14.6 测验答案 269
第15章 使用GraphQL处理数据 271
15.1 GraphQL 272
15.2 给Netflix克隆版应用添加
服务器 273
15.2.1 在服务器端安装
GraphQL 275
15.2.2 数据结构 278
15.2.3 GraphQL模式 279
15.2.4 查询API并将响应保存
到数据存储 281
15.2.5 显示电影列表 285
15.2.6 GraphQL总结 287
15.3 测验 287
15.4 小结 288
15.5 测验答案 288
第16章 使用Jest进行单元测试 289
16.1 测试的类型 290
16.2 为什么使用Jest(对比
Mocha) 290
16.3 使用Jest进行单元测试 291
16.3.1 在Jest中编写单元
测试 293
16.3.2 Jest断言 294
16.4 使用Jest和TestUtils进行
React UI测试 296
16.4.1 使用TestUtils查找
元素 298
16.4.2 UI测试密码部件 299
16.4.3 浅渲染 303
16.5 TestUtils总结 305
16.6 测验 305
16.7 小结 305
16.8 测验答案 306
第17章 在Node中使用React和
同构JavaScript 307
17.1 为什么在服务器端使用React?
什么是同构JavaScript? 308
17.1.1 正确的页面索引 308
17.1.2 更快的加载速度、更好的
性能 309
17.1.3 更好的代码可维护性 310
17.1.4 在React和Node中使用
同构JavaScript 310
17.2 在Node上使用React 312
17.3 React和Express:在服务器端
渲染组件 314
17.3.1 在服务器端渲染简单的
文本 315
17.3.2 渲染HTML页面 316
17.4 使用Express和React的同构
JavaScript 322
17.4.1 项目目录结构和配置 324
17.4.2 启动服务器 325
17.4.3 使用Handlebars的服务器
端布局模板 329
17.4.4 在服务器上编写React
组件 332
17.4.5 客户端React代码 333
17.4.6 配置Webpack 334
17.4.7 运行应用 336
17.5 测验 340
17.6 小结 340
17.7 测验答案 340
第18章 使用ReactRouter创建一个
网上书店 341
18.1 项目结构和Webpack配置 343
18.2 HTML主页 346
18.3 创建组件 347
18.3.1 主文件:app.jsx 347
18.3.2 Cart组件 353
18.3.3 Checkout组件 355
18.3.4 Modal组件 356
18.3.5 Product组件 357
18.4 启动项目 359
18.5 测验 359
18.6 小结 359
第19章 使用Jest测试密码 361
19.1 项目结构和Webpack配置 362
19.2 HTML主页 365
19.3 实现强密码模块 366
19.3.1 测试 366
19.3.2 代码 367
19.4 实现Password组件 369
19.4.1 测试 369
19.4.2 代码 370
19.5 实践 375
19.6 测验 376
19.7 小结 377
第20章 使用Jest、Express和
MongoDB实现自动完成 379
20.1 项目结构和Webpack配置 381
20.2 实现Web服务器 385
20.2.1 定义RESTful API 386
20.2.2 在服务器端渲染React 387
20.3 添加浏览器脚本 387
20.4 创建服务器端模板 388
20.5 实现Autocomplete组件 389
20.5.1 Autocomplete组件的
测试 389
20.5.2 Autocomplete组件的
代码 390
20.6 整合 393
20.7 测验 395
20.8 小结 396
附录A 安装本书相关应用 397
附录B React速查表 405
附录C Express速查表 413
附录D MongoDB和Mongoose
速查表 419
附录E ES6简介