AI輔助React Web應用開發實踐:基於React 19和GitHub Copilot

宋一瑋

  • 出版商: 人民郵電
  • 出版日期: 2025-09-01
  • 售價: $539
  • 語言: 簡體中文
  • 頁數: 280
  • ISBN: 7115677174
  • ISBN-13: 9787115677174
  • 相關分類: React
  • 下單後立即進貨 (約4週~6週)

  • AI輔助React Web應用開發實踐:基於React 19和GitHub Copilot-preview-1
  • AI輔助React Web應用開發實踐:基於React 19和GitHub Copilot-preview-2
AI輔助React Web應用開發實踐:基於React 19和GitHub Copilot-preview-1

相關主題

商品描述

本書旨在系統介紹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應用程序開發人員閱讀,也可作為高校及培訓機構相關專業課程的教學用書。

作者簡介

宋一瑋,專註於前端架構與工程化實踐近20年,現任FreeWheel基礎架構部前端架構師,負責React技術棧選型、關鍵模塊開發,以及團隊能力建設;曾供職於IBM、亞馬遜、時光網等公司,基於以React為主的框架主導開發了10余個大型企業級應用和消費級應用,涵蓋電商系統、視頻廣告管理平臺、數據可視化平臺及移動端應用,其中一些應用的全球日活用戶超過百萬;在極客時間開設專欄“現代React Web開發實戰”,已吸引2萬多用戶訂閱學習,獲得廣泛認可。

目錄大綱

第 一部分 React基礎

第 1章 你好,React 3

1.1 React技術簡介 3

1.2 貫穿全書的聊天應用oh-my-chat 3

1.3 快速創建React項目 5

1.3.1 準備開發環境 5

1.3.2 選擇代碼編輯器 7

1.3.3 AI輔助:安裝AI代碼編輯器 7

1.3.4 使用create-vite創建React項目 8

1.3.5 提交代碼到代碼倉庫 12

1.4 編寫基礎應用代碼 13

1.4.1 項目實現:編寫聊天視圖代碼 13

1.4.2 AI輔助:生成聯系人視圖代碼 20

1.5 React的技術生態 22

1.5.1 一些開源React組件庫 23

1.5.2 什麼是“React全家桶” 23

1.5.3 React Native簡介 24

1.6 AI輔助的前端開發概述 24

1.7 小結 25

第 2章 JSX語法 26

2.1 JSX語法基礎 27

2.1.1 JSX是一種語法糖 27

2.1.2 JSX的“X”:標記的基本寫法 30

2.1.3 JSX的“JS”:JavaScript表達式 34

2.1.4 JSX與HTML的異同 35

2.2 進一步理解JSX 36

2.2.1 前端開發的聲明式與命令式 36

2.2.2 JSX的產物:React元素 37

2.2.3 不用JSX還能寫React代碼嗎 39

2.3 編寫JSX的常用模式 39

2.3.1 條件渲染 40

2.3.2 循環渲染 42

2.3.3 透傳子元素 45

2.3.4 屬性展開語法 45

2.4 AI輔助:生成JSX代碼 46

2.5 小結 48

第3章 React組件 49

3.1 前端開發組件化 50

3.2 用函數定義React組件 51

3.3 組件與Hooks API 52

3.3.1 借用函數式編程理解Hooks 53

3.3.2 React Hooks有哪些 55

3.3.3 Hooks的使用規則 55

3.4 組件樹 56

3.5 如何拆分React組件 57

3.5.1 用React Developer Tools查看組件樹 58

3.5.2 拆分組件的原則和常見方法 59

3.5.3 項目實現:繼續拆分oh-my-chat的組件 60

3.5.4 項目實現:將組件拆分為獨立文件 63

3.5.5 組件拆分的一些心得 65

3.6 AI輔助:AI與組件樹設計 66

3.6.1 AI輔助:用AI指導組件拆分 66

3.6.2 AI輔助:根據代碼畫出組件樹 67

3.7 過時API:類組件 68

3.7.1 函數組件的崛起 68

3.7.2 還有必要學習類組件嗎 70

3.8 小結 71

第4章 數據驅動(上):React的數據 72

4.1 React是數據驅動的前端框架 73

4.2 Props:父組件傳給子組件的數據 73

4.2.1 如何聲明和使用props 74

4.2.2 項目實現:利用props拆分oh-my-chat列表組件 75

4.3 state:組件自己的狀態數據 76

4.3.1 組件狀態 76

4.3.2 核心Hook:useState 77

4.3.3 項目實現:利用state管理oh-my-chat列表數據 80

4.3.4 更新state的自動批處理 85

4.4 context:組件樹共享的全局數據 86

4.5 小結 88

第5章 數據驅動(下):組件間通信 89

5.1 React組件間通信 89

5.2 組件間通信模式:狀態提升 90

5.2.1 什麼是狀態提升 90

5.2.2 項目實現:利用狀態提升實現聯系人列表和詳情的聯動 91

5.3 組件間通信模式:屬性鉆取 93

5.3.1 什麼是屬性鉆取 93

5.3.2 項目實現:用context代替props切換視圖 94

5.4 AI輔助:重構組件代碼 98

5.5 React中的單向數據流 100

5.5.1 什麼是數據流 101

5.5.2 React單向數據流 101

5.5.3 項目實現:分析oh-my-chat的數據流 102

5.6 小結 103

第6章 React的副作用 104

6.1 什麼是副作用 104

6.1.1 前端領域的副作用 105

6.1.2 React中的副作用 105

6.1.3 React中的渲染和提交 105

6.2 核心Hook:useEffect 106

6.2.1 useEffect的基本用法 106

6.2.2 副作用的條件執行 107

6.2.3 副作用的清理函數 109

6.3 項目實現:在oh-my-chat加入副作用 110

6.3.1 項目實現:利用副作用讀取遠程消息 110

6.3.2 項目實現:顯示發送消息的相對時間 114

6.3.3 項目實現:自動滾動到消息列表末尾 116

6.4 開發模式下的useEffect 117

6.4.1 依賴項數組的靜態檢查 117

6.4.2 為什麼副作用會被觸發兩次 118

6.5 小結 118

第7章 事件處理 119

7.1 React合成事件 120

7.2 合成事件與原生DOM事件的區別 120

7.2.1 註冊事件監聽函數的方式不同 120

7.2.2 特定事件的行為不同 121

7.2.3 實際註冊的目標DOM元素不同 122

7.3 合成事件的冒泡與捕獲 122

7.4 受控組件 123

7.5 在React中使用原生DOM事件 124

7.5.1 使用原生DOM事件的典型場景 124

7.5.2 項目實現:使用原生DOM事件實現Click-outside 125

7.6 小結 126

第8章 組件樣式 127

8.1 現代前端樣式開發面臨的挑戰 128

8.2 React應用中開發樣式的方案 128

8.2.1 內聯樣式 128

8.2.2 CSS Modules 129

8.2.3 CSS-in-JS 130

8.2.4 原子化CSS 131

8.3 如何選擇合適的CSS方案 131

8.4 項目實現:為oh-my-chat實現CSS組件化 132

8.4.1 技術選型:Linaria框架 133

8.4.2 Linaria框架的安裝和基本用法 133

8.4.3 嵌套選擇器 136

8.4.4 在樣式中使用組件數據 138

8.5 AI輔助:修改組件樣式 139

8.5 小結 140

第二部分 React進階

第9章 生命周期與虛擬DOM 143

9.1 React的生命周期 144

9.1.1 React更新過程 144

9.1.2 組件生命周期 144

9.1.3 副作用的生命周期 147

9.2 虛擬DOM 147

9.2.1 什麼是虛擬DOM 147

9.2.2 真實DOM有什麼問題 148

9.3 協調 149

9.3.1 Diffing算法 149

9.3.2 觸發協調的場景 150

9.3.3 什麼是Fiber協調引擎 150

9.3.4 Fiber中的重要概念和模型 151

9.3.5 協調過程是怎樣的 152

9.4 小結 155

第 10章 應用狀態管理 156

10.1 什麼是應用狀態管理 157

10.2 不可變數據 158

10.2.1 什麼是不可變數據 158

10.2.2 不可變數據在React中的作用 159

10.3 不可變數據的實現 160

10.3.1 手動實現 160

10.3.2 可持久化數據結構和Immutable.js 160

10.3.3 如何解決原理和直覺的矛盾 161

10.3.4 在React中使用Immer 161

10.4 再談React應用狀態 162

10.4.1 React應用中的狀態分類 162

10.4.2 全局狀態與局部狀態 164

10.4.3 狀態Hook:useReducer 165

10.5 狀態管理框架Zustand 166

10.5.1 何時引入獨立的狀態管理框架 166

10.5.2 Zustand簡介 167

10.5.3 利用Immer在Zustand中操作不可變數據 168

10.5.4 項目實現:利用Zustand + Immer共享狀態數據 169

10.5.5 項目實現:利用Zustand + Immer實現修改和刪除聯系人 170

10.5.6 可否混用React內建state和Zustand 172

10.6 小結 172

第 11章 優化性能與用戶體驗 173

11.1 性能優化的時機與思路 173

11.1.1 不要過早做性能優化 174

11.1.2 應用性能問題的表現 174

11.1.3 定位性能問題的根源 175

11.2 React組件的性能優化 176

11.2.1 利用性能優化Hook:useMemo緩存計算結果 176

11.2.2 利用React純組件避免不必要的渲染 177

11.2.3 利用性能優化Hook:useCallback避免純組件失效 179

11.2.4 區分低優先級的更新:startTransition和useTransition 181

11.3 React應用的整體性能優化 183

11.3.1 為生產環境構建 183

11.3.2 代碼分割 183

11.4 AI輔助:分析React性能問題 183

11.5 AI輔助:分析React報錯信息 185

11.6 小結 186

第 12章 可擴展的React代碼 187

12.1 React代碼的分解和抽象 187

12.1.1 React應用代碼中的抽象 188

12.1.2 項目實現:自定義Hooks 188

12.1.3 組件組合 190

12.2 可復用的自定義Hooks 190

12.3 可復用的React組件 191

12.3.1 項目實現:抽取公共組件 192

12.3.2 項目實現:在組件中暴露DOM元素 194

12.3.3 高階組件 196

12.3.4 React組件庫 198

12.4 可擴展的代碼目錄結構 198

12.4.1 典型的React項目文件目錄結構 198

12.4.2 項目實現:大中型React項目推薦的文件目錄結構 199

12.4.3 項目實現:模塊導入路徑過長怎麼辦 200

12.5 AI輔助:代碼審查 201

12.6 小結 202

第三部分 Web應用開發

第 13章 前端路由 205

13.1 前端路由簡介 205

13.1.1 什麼是前端路由 205

13.1.2 前端路由與傳統後端路由的區別 206

13.2 利用React Router實現React前端路由 207

13.2.1 React Router基本用法 207

13.2.2 項目實現:為oh-my-chat加入前端路由 208

13.3 React代碼分割和懶加載 210

13.3.1 React的代碼分割 210

13.3.2 利用React.lazy和Suspense進行懶加載 211

13.3.3 利用React Router進行懶加載 212

13.4 小結 212

第 14章 表單處理 213

14.1 表單處理的要素 214

14.2 表單的數據綁定 214

14.2.1 雙向數據綁定 214

14.2.2 單向數據綁定 215

14.2.3 操作原生表單控件DOM 215

14.2.4 針對整個表單的批量數據綁定 216

14.3 表單驗證 217

14.4 表單提交和錯誤處理 219

14.5 非受控組件與受控組件的區別 220

14.6 React 19新API:Form Actions 221

14.6.1 React 19中的Action 221

14.6.2 React 19新Hook:useFormStatus 223

14.6.3 React 19新Hook:useActionState 224

14.6.4 React 19新Hook:useOptimistic 225

14.7 基於React Hook Form開發表單 227

14.7.1 React Hook Form的基本用法 227

14.7.2 項目實現:用React Hook Form實現聯系人表單 228

14.8 小結 231

第 15章 與服務器端通信 232

15.1 與服務器端通信的要點 233

15.1.1 服務器端通信的異步性 233

15.1.2 HTTP請求的數據格式 234

15.1.3 認證授權 234

15.1.4 錯誤處理 235

15.1.5 緩存HTTP請求 235

15.1.6 安全性 235

15.2 在React中實現與服務器端通信 236

15.2.1 使用瀏覽器標準fetch API 236

15.2.2 使用開源網絡請求庫Axios 237

15.3 React 19:新use API 237

15.3.1 React 19新API:use(Promise) 237

15.3.2 React 19新API:use(Context) 240

15.4 異步狀態管理庫React Query 240

15.4.1 什麼是異步狀態管理 240

15.4.2 項目實現:使用React Query緩存對話列表的網絡請求 241

15.4.3 項目實現:使用React Query變更對話列表數據 242

15.4.4 React Query的其他功能 245

15.5 小結 245

第 16章 質量保證 246

16.1 前端項目的質量保證 246

16.1.1 質量保證與軟件測試的區別與聯系 247

16.1.2 人工測試與自動化測試 247

16.1.3 前端開發者應該了解的測試金字塔 248

16.2 React項目的端到端測試 249

16.2.1 使用Playwright創建端到端測試項目 249

16.2.2 項目實現:設計端到端測試用例 250

16.2.3 項目實現:使用Playwright開發端到端測試用例 251

16.2.4 項目實現:提升Playwright測試用例的可維護性 252

16.2.5 其他端到端測試工具 253

16.3 React單元測試 254

16.3.1 React單元測試的範圍和目標 254

16.3.2 項目實現:用Jest + RTL編寫單元測試 254

16.3.3 項目實現:為oh-my-chat的React組件編寫單元測試 257

16.4 AI輔助:生成測試代碼 258

16.5 小結 260

第 17章 工程化與架構 261

17.1 配置React項目 261

17.1.1 React項目腳手架 262

17.1.2 構建與轉譯 262

17.1.3 靜態代碼檢查與格式化 264

17.1.4 代碼自動補全 264

17.1.5 自動化測試與代碼覆蓋率統計 264

17.2 使用TypeScript語言開發React項目 265

17.2.1 什麼是TypeScript 265

17.2.2 項目實現:在React項目中使用TypeScript 266

17.2.3 項目實現:用TypeScript定義組件props類型 266

17.2.4 用TypeScript定義Hooks類型 267

17.2.5 在React項目中使用TypeScript的建議 268

17.3 部署React項目 268

17.3.1 部署構建後的靜態資源文件 268

17.3.2 CI/CD持續集成與交付 269

17.4 線上監控 269

17.5 靈活的React架構 270

17.5.1 CSR、SSR與SSG 270

17.5.2 基於React的Web開發框架Next.js 272

17.6 對React未來的展望 272

17.7 AI輔助:前端開發的其他環節 273

17.8 小結 274

第 18章 AI聊天機器人 275

18.1 項目實現:安裝Ollama 276

18.2 項目實現:基於LangChain實現聊天機器人功能 276

18.2.1 項目實現:基礎的機器人回復 276

18.2.2 項目實現:流式對話 278

18.2.3 項目實現:多輪對話 279

18.3 小結 280

最後瀏覽商品 (20)