深入 React 技术栈

🌙
手机阅读
本文目录结构

深入 React 技术栈

编辑推荐

全面深入讲述 React 技术栈的第 1 本原创图书,Strikingly 联合创始人及 CTO 郭达峰作序推荐,pure render 专栏主创倾力打造

覆盖 React、Flux、Redux 及可视化,帮助开发者在实践中深入理解技术和源码

前端组件化主流解决方案,一本书玩转 React“全家桶”

内容简介

本书从几个维度去介绍 React。一是作为 View 库,它怎么实现组件化,以及它背后的实现原理。二是扩展到 Flux 应用架构及重要的衍生品 Redux,它们怎么与 React 结合做应用开发。三是对 React 与 server 的碰撞产生的一些思考。四是讲述它在可视化方面的优势与劣势。

本书适合有一定经验的前端开发人员阅读。

作者简介

陈屹,前端架构师,就职于阿里巴巴。热衷开源事业,长年专注于前端架构、数据可视化、Node.js 等领域,知乎专栏 pure render 的创办人。

目录

第 1 章 初入 React 世界 1

  • 1.1 React 简介 1
  • 1.1.1 专注视图层 1
  • 1.1.2 Virtual DOM 1
  • 1.1.3 函数式编程 2
  • 1.2 JSX 语法 3
  • 1.2.1 JSX 的由来 3
  • 1.2.2 JSX 基本语法 7
  • 1.3 React 组件 11
  • 1.3.1 组件的演变 11
  • 1.3.2 React 组件的构建 18
  • 1.4 React 数据流 21
  • 1.4.1 state 21
  • 1.4.2 props 23
  • 1.5 React 生命周期 29
  • 1.5.1 挂载或卸载过程 29
  • 1.5.2 数据更新过程 30
  • 1.5.3 整体流程 33
  • 1.6 React 与 DOM 34
  • 1.6.1 ReactDOM 35
  • 1.6.2 ReactDOM 的不稳定方法 36
  • 1.6.3 refs 38
  • 1.6.4 React 之外的 DOM 操作 40
  • 1.7 组件化实例:Tabs 组件 41
  • 1.8 小结 47

第 2 章 漫淡 React 48

  • 2.1 事件系统 48
  • 2.1.1 合成事件的绑定方式 48
  • 2.1.2 合成事件的实现机制 49
  • 2.1.3 在 React 中使用原生事件 51
  • 2.1.4 合成事件与原生事件混用 51
  • 2.1.5 对比 React 合成事件与 JavaScript 原生事件 54
  • 2.2 表单 55
  • 2.2.1 应用表单组件 55
  • 2.2.2 受控组件 60
  • 2.2.3 非受控组件 61
  • 2.2.4 对比受控组件和非受控组件 62
  • 2.2.5 表单组件的几个重要属性 63
  • 2.3 样式处理 64
  • 2.3.1 基本样式设置 64
  • 2.3.2 CSS Modules 66
  • 2.4 组件间通信 74
  • 2.4.1 父组件向子组件通信 74
  • 2.4.2 子组件向父组件通信 75
  • 2.4.3 跨级组件通信 77
  • 2.4.4 没有嵌套关系的组件通信 79
  • 2.5 组件间抽象 81
  • 2.5.1 mixin 81
  • 2.5.2 高阶组件 86
  • 2.5.3 组合式组件开发实践 93
  • 2.6 组件性能优化 97
  • 2.6.1 纯函数 97
  • 2.6.2 PureRender 100
  • 2.6.3 Immutable 103
  • 2.6.4 key 109
  • 2.6.5 react-addons-perf 110
  • 2.7 动画 111
  • 2.7.1 CSS 动画与 JavaScript 动画 111
  • 2.7.2 玩转 React Transition 113
  • 2.7.3 缓动函数 116
  • 2.8 自动化测试 121
  • 2.8.1 Jest 121
  • 2.8.2 Enzyme 124
  • 2.8.3 自动化测试 125
  • 2.9 组件化实例:优化 Tabs 组件 125
  • 2.10 小结 133

第 3 章 解读 React 源码 134

  • 3.1 初探 React 源码 134
  • 3.2 Virtual DOM 模型 137
  • 3.2.1 创建 React 元素 138
  • 3.2.2 初始化组件入口 140
  • 3.2.3 文本组件 141
  • 3.2.4 DOM 标签组件 144
  • 3.2.5 自定义组件 150
  • 3.3 生命周期的管理艺术 151
  • 3.3.1 初探 React 生命周期 152
  • 3.3.2 详解 React 生命周期 152
  • 3.3.3 无状态组件 163
  • 3.4 解密 setState 机制 164
  • 3.4.1 setState 异步更新 164
  • 3.4.2 setState 循环调用风险 165
  • 3.4.3 setState 调用栈 166
  • 3.4.4 初识事务 168
  • 3.4.5 解密 setState 170
  • 3.5 diff 算法 172
  • 3.5.1 传统 diff 算法 172
  • 3.5.2 详解 diff 172
  • 3.6 React Patch 方法 181
  • 3.7 小结 183

第 4 章 认识 Flux 架构模式 184

  • 4.1 React 独立架构 184
  • 4.2 MV* 与 Flux 190
  • 4.2.1 MVC/MVVM 190
  • 4.2.2 Flux 的解决方案 193
  • 4.3 Flux 基本概念 194
  • 4.4 Flux 应用实例 198
  • 4.4.1 初始化目录结构 198
  • 4.4.2 设计 store 198
  • 4.4.3 设计 actionCreator 200
  • 4.4.4 构建 controller-view 202
  • 4.4.5 重构 view 203
  • 4.4.6 添加单元测试 205
  • 4.5 解读 Flux 206
  • 4.5.1 Flux 核心思想 206
  • 4.5.2 Flux 的不足 207
  • 4.6 小结 207

第 5 章 深入 Redux 应用架构 208

  • 5.1 Redux 简介 208
  • 5.1.1 Redux 是什么 208
  • 5.1.2 Redux 三大原则 209
  • 5.1.3 Redux 核心 API 210
  • 5.1.4 与 React 绑定 211
  • 5.1.5 增强 Flux 的功能 212
  • 5.2 Redux middleware 212
  • 5.2.1 middleware 的由来 212
  • 5.2.2 理解 middleware 机制 213
  • 5.3 Redux 异步流 217
  • 5.3.1 使用 middleware 简化异步
  • 请求 217
  • 5.3.2 使用 middleware 处理复杂
  • 异步流 221
  • 5.4 Redux 与路由 224
  • 5.4.1 React Router 225
  • 5.4.2 React Router Redux 227
  • 5.5 Redux 与组件 229
  • 5.5.1 容器型组件 229
  • 5.5.2 展示型组件 229
  • 5.5.3 Redux 中的组件 230
  • 5.6 Redux 应用实例 231
  • 5.6.1 初始化 Redux 项目 231
  • 5.6.2 划分目录结构 232
  • 5.6.3 设计路由 234
  • 5.6.4 让应用跑起来 235
  • 5.6.5 优化构建脚本 239
  • 5.6.6 添加布局文件 239
  • 5.6.7 准备首页的数据 242
  • 5.6.8 连接 Redux 245
  • 5.6.9 引入 Redux Devtools 250
  • 5.6.10 利用 middleware 实现 Ajax
  • 请求发送 251
  • 5.6.11 请求本地的数据 252
  • 5.6.12 页面之间的跳转 253
  • 5.6.13 优化与改进 256
  • 5.6.14 添加单元测试 257
  • 5.7 小结 258

第 6 章 Redux 高阶运用 259

  • 6.1 高阶 reducer 259

  • 6.1.1 reducer 的复用 259

  • 6.1.2 reducer 的增强 261

  • 6.2 Redux 与表单 262

  • 6.2.1 使用 redux-form-utils 减少

  • 创建表单的冗余代码 263

  • 6.2.2 使用 redux-form 完成表单的

  • 异步验证 265

  • 6.2.3 使用高阶 reducer 为现有模块

  • 引入表单功能 267

  • 6.3 Redux CRUD 实战 268

  • 6.3.1 准备工作 268

  • 6.3.2 使用 Table 组件完成“查”

  • 功能 269

  • 6.3.3 使用 Modal 组件完成“增”

  • 与“改” 274

  • 6.3.4 巧用 Modal 实现数据的删除

  • 确认 277

  • 6.3.5 善用 promise 玩转 Redux 异步事件流 278

  • 6.4 Redux 性能优化 279

  • 6.4.1 Reselect 280

  • 6.4.2 Immutable Redux 282

  • 6.4.3 Reducer 性能优化 282

  • 6.5 解读 Redux 284

  • 6.5.1 参数归一化 285

  • 6.5.2 初始状态及 getState 286

  • 6.5.3 subscribe 286

  • 6.5.4 dispatch 287

  • 6.5.5 replaceReducer 288

  • 6.6 解读 react-redux 288

  • 6.6.1 Provider 288

  • 6.6.2  connect 290

  • 6.6.3 代码热替换 293

  • 6.7 小结 294

第 7 章 React 服务端渲染 295

  • 7.1 React 与服务端模板 295
  • 7.1.1 什么是服务端渲染 295
  • 7.1.2 react-view 296
  • 7.1.3 react-view 源码解读 296
  • 7.2 React 服务端渲染 299
  • 7.2.1 玩转 Node.js 300
  • 7.2.2 React-Router 和 Koa-Router
  • 统一 303
  • 7.2.3 同构数据处理的探讨 306
  • 7.3 小结 307

第 8 章 玩转 React 可视化 308

  • 8.1 React 结合 Canvas 和 SVG 308
  • 8.1.1 Canvas 与 SVG 308
  • 8.1.2 在 React 中的 Canvas 310
  • 8.1.3 React 中的 SVG 311
  • 8.2 React 与可视化组件 316
  • 8.2.1 包装已有的可视化库 316
  • 8.2.2 使用 D3 绘制 UI 部分 317
  • 8.2.3 使用 React 绘制 UI 部分 319
  • 8.3 Recharts 组件化的原理 322
  • 8.3.1 声明式的标签 323
  • 8.3.2 贴近原生的配置项 325
  • 8.3.3 接口式的 API 326
  • 8.4 小结 328
  • 附录 A 开发环境 329
  • 附录 B 编码规范 345
  • 附录 C Koa middleware 349

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了