AI辅助React Web应用开发实践:基于React 19和GitHub Copilot
定 价:89.8 元
本书旨在系统介绍React框架,围绕React18及后续版本的核心开发范式--函数组件和Hooks展开,并以一款聊天应用的开发为例演示如何运用现代React技术开发Web应用。另外,本书还将探讨 AI技术在React前端开发中的应用实践。本书分为3个部分。第一部分是React基础,从创建React项目入手,先系统介绍JSX 语法、React组件、基础HooksAPI等基础知识,再介绍如何使用props、state、context等数据驱动 React开发,如何利用副作用和事件处理实现业务、交互逻辑,以及如何开发组件样式。第二部分是React 进阶,深入介绍生命周期与虚拟DOM、应用状态管理及相关框架、优化性能与用户体验,并从自定义Hooks、代码复用等角度介绍如何开发可扩展的React代码。第三部分是Web应用开发,以聊天应用为载体,结合 React技术生态,演示前端路由、表单处理、与服务器端通信、质量保证、工程化与架构等,并以开发 AI 聊天机器人为例探索AI时代前端开发的创新方向。同时,本书会在相关章节中融入AI辅助开发的内容,涵盖AIIDE、智能体代码生成、组件拆分辅助、性能问题分析、样式代码生成和单元测试、代码审查等。本书既适合有一定编程经验的Web应用程序开发人员阅读,也可作为高校及培训机构相关专业课程的教学用书。
·内容体系化:从 React 基础到进阶,再到项目实战,构建完整学习链路。·实战导向强:以聊天应用开发为例,手把手演示现代 React 技术落地过程。·AI 融合深:融入 AI 辅助开发全场景,覆盖代码生成、测试等核心环节。·技术前沿化:聚焦 React 19 及 GitHub Copilot,同步行业开发范式。·受众适配广:适配 Web开发者自学与院校教学,满足多元学习需求。
宋一玮,专注于前端架构与工程化实践近20年,现任FreeWheel基础架构部前端架构师,负责React技术栈选型、关键模块开发,以及团队能力建设;曾供职于IBM、亚马逊、时光网等公司,基于以React为主的框架主导开发了10余个大型企业级应用和消费级应用,涵盖电商系统、视频广告管理平台、数据可视化平台及移动端应用,其中一些应用的全球日活用户超过百万;在极客时间开设专栏现代React Web开发实战,已吸引2万多用户订阅学习,获得广泛认可。
第 一部分 React基础第 1章 你好,React 31.1 React技术简介 31.2 贯穿全书的聊天应用oh-my-chat 31.3 快速创建React项目 51.3.1 准备开发环境 51.3.2 选择代码编辑器 71.3.3 AI辅助:安装AI代码编辑器 71.3.4 使用create-vite创建React项目 81.3.5 提交代码到代码仓库 121.4 编写基础应用代码 131.4.1 项目实现:编写聊天视图代码 131.4.2 AI辅助:生成联系人视图代码 201.5 React的技术生态 221.5.1 一些开源React组件库 231.5.2 什么是React全家桶 231.5.3 React Native简介 241.6 AI辅助的前端开发概述 241.7 小结 25第 2章 JSX语法 262.1 JSX语法基础 272.1.1 JSX是一种语法糖 272.1.2 JSX的X:标记的基本写法 302.1.3 JSX的JS:JavaScript表达式 342.1.4 JSX与HTML的异同 352.2 进一步理解JSX 362.2.1 前端开发的声明式与命令式 362.2.2 JSX的产物:React元素 372.2.3 不用JSX还能写React代码吗 392.3 编写JSX的常用模式 392.3.1 条件渲染 402.3.2 循环渲染 422.3.3 透传子元素 452.3.4 属性展开语法 452.4 AI辅助:生成JSX代码 462.5 小结 48第3章 React组件 493.1 前端开发组件化 503.2 用函数定义React组件 513.3 组件与Hooks API 523.3.1 借用函数式编程理解Hooks 533.3.2 React Hooks有哪些 553.3.3 Hooks的使用规则 553.4 组件树 563.5 如何拆分React组件 573.5.1 用React Developer Tools查看组件树 583.5.2 拆分组件的原则和常见方法 593.5.3 项目实现:继续拆分oh-my-chat的组件 603.5.4 项目实现:将组件拆分为独立文件 633.5.5 组件拆分的一些心得 653.6 AI辅助:AI与组件树设计 663.6.1 AI辅助:用AI指导组件拆分 663.6.2 AI辅助:根据代码画出组件树 673.7 过时API:类组件 683.7.1 函数组件的崛起 683.7.2 还有必要学习类组件吗 703.8 小结 71第4章 数据驱动(上):React的数据 724.1 React是数据驱动的前端框架 734.2 Props:父组件传给子组件的数据 734.2.1 如何声明和使用props 744.2.2 项目实现:利用props拆分oh-my-chat列表组件 754.3 state:组件自己的状态数据 764.3.1 组件状态 764.3.2 核心Hook:useState 774.3.3 项目实现:利用state管理oh-my-chat列表数据 804.3.4 更新state的自动批处理 854.4 context:组件树共享的全局数据 864.5 小结 88第5章 数据驱动(下):组件间通信 895.1 React组件间通信 895.2 组件间通信模式:状态提升 905.2.1 什么是状态提升 905.2.2 项目实现:利用状态提升实现联系人列表和详情的联动 915.3 组件间通信模式:属性钻取 935.3.1 什么是属性钻取 935.3.2 项目实现:用context代替props切换视图 945.4 AI辅助:重构组件代码 985.5 React中的单向数据流 1005.5.1 什么是数据流 1015.5.2 React单向数据流 1015.5.3 项目实现:分析oh-my-chat的数据流 1025.6 小结 103第6章 React的副作用 1046.1 什么是副作用 1046.1.1 前端领域的副作用 1056.1.2 React中的副作用 1056.1.3 React中的渲染和提交 1056.2 核心Hook:useEffect 1066.2.1 useEffect的基本用法 1066.2.2 副作用的条件执行 1076.2.3 副作用的清理函数 1096.3 项目实现:在oh-my-chat加入副作用 1106.3.1 项目实现:利用副作用读取远程消息 1106.3.2 项目实现:显示发送消息的相对时间 1146.3.3 项目实现:自动滚动到消息列表末尾 1166.4 开发模式下的useEffect 1176.4.1 依赖项数组的静态检查 1176.4.2 为什么副作用会被触发两次 1186.5 小结 118第7章 事件处理 1197.1 React合成事件 1207.2 合成事件与原生DOM事件的区别 1207.2.1 注册事件监听函数的方式不同 1207.2.2 特定事件的行为不同 1217.2.3 实际注册的目标DOM元素不同 1227.3 合成事件的冒泡与捕获 1227.4 受控组件 1237.5 在React中使用原生DOM事件 1247.5.1 使用原生DOM事件的典型场景 1247.5.2 项目实现:使用原生DOM事件实现Click-outside 1257.6 小结 126第8章 组件样式 1278.1 现代前端样式开发面临的挑战 1288.2 React应用中开发样式的方案 1288.2.1 内联样式 1288.2.2 CSS Modules 1298.2.3 CSS-in-JS 1308.2.4 原子化CSS 1318.3 如何选择合适的CSS方案 1318.4 项目实现:为oh-my-chat实现CSS组件化 1328.4.1 技术选型:Linaria框架 1338.4.2 Linaria框架的安装和基本用法 1338.4.3 嵌套选择器 1368.4.4 在样式中使用组件数据 1388.5 AI辅助:修改组件样式 1398.5 小结 140第二部分 React进阶第9章 生命周期与虚拟DOM 1439.1 React的生命周期 1449.1.1 React更新过程 1449.1.2 组件生命周期 1449.1.3 副作用的生命周期 1479.2 虚拟DOM 1479.2.1 什么是虚拟DOM 1479.2.2 真实DOM有什么问题 1489.3 协调 1499.3.1 Diffing算法 1499.3.2 触发协调的场景 1509.3.3 什么是Fiber协调引擎 1509.3.4 Fiber中的重要概念和模型 1519.3.5 协调过程是怎样的 1529.4 小结 155第 10章 应用状态管理 15610.1 什么是应用状态管理 15710.2 不可变数据 15810.2.1 什么是不可变数据 15810.2.2 不可变数据在React中的作用 15910.3 不可变数据的实现 16010.3.1 手动实现 16010.3.2 可持久化数据结构和Immutable.js 16010.3.3 如何解决原理和直觉的矛盾 16110.3.4 在React中使用Immer 16110.4 再谈React应用状态 16210.4.1 React应用中的状态分类 16210.4.2 全局状态与局部状态 16410.4.3 状态Hook:useReducer 16510.5 状态管理框架Zustand 16610.5.1 何时引入独立的状态管理框架 16610.5.2 Zustand简介 16710.5.3 利用Immer在Zustand中操作不可变数据 16810.5.4 项目实现:利用Zustand Immer共享状态数据 16910.5.5 项目实现:利用Zustand Immer实现修改和删除联系人 17010.5.6 可否混用React内建state和Zustand 17210.6 小结 172第 11章 优化性能与用户体验 17311.1 性能优化的时机与思路 17311.1.1 不要过早做性能优化 17411.1.2 应用性能问题的表现 17411.1.3 定位性能问题的根源 17511.2 React组件的性能优化 17611.2.1 利用性能优化Hook:useMemo缓存计算结果 17611.2.2 利用React纯组件避免不必要的渲染 17711.2.3 利用性能优化Hook:useCallback避免纯组件失效 17911.2.4 区分低优先级的更新:startTransition和useTransition 18111.3 React应用的整体性能优化 18311.3.1 为生产环境构建 18311.3.2 代码分割 18311.4 AI辅助:分析React性能问题 18311.5 AI辅助:分析React报错信息 18511.6 小结 186第 12章 可扩展的React代码 18712.1 React代码的分解和抽象 18712.1.1 React应用代码中的抽象 18812.1.2 项目实现:自定义Hooks 18812.1.3 组件组合 19012.2 可复用的自定义Hooks 19012.3 可复用的React组件 19112.3.1 项目实现:抽取公共组件 19212.3.2 项目实现:在组件中暴露DOM元素 19412.3.3 高阶组件 19612.3.4 React组件库 19812.4 可扩展的代码目录结构 19812.4.1 典型的React项目文件目录结构 19812.4.2 项目实现:大中型React项目推荐的文件目录结构 19912.4.3 项目实现:模块导入路径过长怎么办 20012.5 AI辅助:代码审查 20112.6 小结 202第三部分 Web应用开发第 13章 前端路由 20513.1 前端路由简介 20513.1.1 什么是前端路由 20513.1.2 前端路由与传统后端路由的区别 20613.2 利用React Router实现React前端路由 20713.2.1 React Router基本用法 20713.2.2 项目实现:为oh-my-chat加入前端路由 20813.3 React代码分割和懒加载 21013.3.1 React的代码分割 21013.3.2 利用React.lazy和Suspense进行懒加载 21113.3.3 利用React Router进行懒加载 21213.4 小结 212第 14章 表单处理 21314.1 表单处理的要素 21414.2 表单的数据绑定 21414.2.1 双向数据绑定 21414.2.2 单向数据绑定 21514.2.3 操作原生表单控件DOM 21514.2.4 针对整个表单的批量数据绑定 21614.3 表单验证 21714.4 表单提交和错误处理 21914.5 非受控组件与受控组件的区别 22014.6 React 19新API:Form Actions 22114.6.1 React 19中的Action 22114.6.2 React 19新Hook:useFormStatus 22314.6.3 React 19新Hook:useActionState 22414.6.4 React 19新Hook:useOptimistic 22514.7 基于React Hook Form开发表单 22714.7.1 React Hook Form的基本用法 22714.7.2 项目实现:用React Hook Form实现联系人表单 22814.8 小结 231第 15章 与服务器端通信 23215.1 与服务器端通信的要点 23315.1.1 服务器端通信的异步性 23315.1.2 HTTP请求的数据格式 23415.1.3 认证授权 23415.1.4 错误处理 23515.1.5 缓存HTTP请求 23515.1.6 安全性 23515.2 在React中实现与服务器端通信 23615.2.1 使用浏览器标准fetch API 23615.2.2 使用开源网络请求库Axios 23715.3 React 19:新use API 23715.3.1 React 19新API:use(Promise) 23715.3.2 React 19新API:use(Context) 24015.4 异步状态管理库React Query 24015.4.1 什么是异步状态管理 24015.4.2 项目实现:使用React Query缓存对话列表的网络请求 24115.4.3 项目实现:使用React Query变更对话列表数据 24215.4.4 React Query的其他功能 24515.5 小结 245第 16章 质量保证 24616.1 前端项目的质量保证 24616.1.1 质量保证与软件测试的区别与联系 24716.1.2 人工测试与自动化测试 24716.1.3 前端开发者应该了解的测试金字塔 24816.2 React项目的端到端测试 24916.2.1 使用Playwright创建端到端测试项目 24916.2.2 项目实现:设计端到端测试用例 25016.2.3 项目实现:使用Playwright开发端到端测试用例 25116.2.4 项目实现:提升Playwright测试用例的可维护性 25216.2.5 其他端到端测试工具 25316.3 React单元测试 25416.3.1 React单元测试的范围和目标 25416.3.2 项目实现:用Jest RTL编写单元测试 25416.3.3 项目实现:为oh-my-chat的React组件编写单元测试 25716.4 AI辅助:生成测试代码 25816.5 小结 260第 17章 工程化与架构 26117.1 配置React项目 26117.1.1 React项目脚手架 26217.1.2 构建与转译 26217.1.3 静态代码检查与格式化 26417.1.4 代码自动补全 26417.1.5 自动化测试与代码覆盖率统计 26417.2 使用TypeScript语言开发React项目 26517.2.1 什么是TypeScript 26517.2.2 项目实现:在React项目中使用TypeScript 26617.2.3 项目实现:用TypeScript定义组件props类型 26617.2.4 用TypeScript定义Hooks类型 26717.2.5 在React项目中使用TypeScript的建议 26817.3 部署React项目 26817.3.1 部署构建后的静态资源文件 26817.3.2 CI CD持续集成与交付 26917.4 线上监控 26917.5 灵活的React架构 27017.5.1 CSR、SSR与SSG 27017.5.2 基于React的Web开发框架Next.js 27217.6 对React未来的展望 27217.7 AI辅助:前端开发的其他环节 27317.8 小结 274第 18章 AI聊天机器人 27518.1 项目实现:安装Ollama 27618.2 项目实现:基于LangChain实现聊天机器人功能 27618.2.1 项目实现:基础的机器人回复 27618.2.2 项目实现:流式对话 27818.2.3 项目实现:多轮对话 27918.3 小结 280