v19.2Latest

漸進式採用

React Compiler 可以漸進式採用,讓您先在程式碼庫的特定部分試用。本指南將向您展示如何在現有專案中逐步推出編譯器。

您將學習
  • 為何推薦漸進式採用
  • 使用 Babel 覆寫進行基於目錄的採用
  • 使用 "use memo" 指令進行選擇性編譯
  • 使用 "use no memo" 指令排除元件
  • 使用閘道控制的執行階段功能標誌
  • 監控您的採用進度

為何採用漸進式?

React Compiler 旨在自動優化您的整個程式碼庫,但您不必一次全部採用。漸進式採用讓您能控制推出過程,讓您先在應用程式的小部分測試編譯器,再擴展到其餘部分。

從小處著手有助於您建立對編譯器優化的信心。您可以驗證應用程式在編譯後的程式碼下行為是否正確,測量效能改進,並識別程式碼庫特有的任何邊緣案例。這種方法對於穩定性至關重要的生產應用程式尤其有價值。

漸進式採用也使處理編譯器可能發現的任何 React 規則違規變得更容易。您不必一次修復整個程式碼庫的違規,而是可以在擴展編譯器覆蓋範圍時系統性地處理它們。這使得遷移過程更易於管理,並降低了引入錯誤的風險。

透過控制哪些程式碼部分被編譯,您還可以執行 A/B 測試來衡量編譯器優化在實際情況中的影響。這些數據有助於您做出關於全面採用的明智決策,並向您的團隊展示其價值。

漸進式採用的方法

有三種主要方法可以漸進式採用 React Compiler:

  1. Babel 覆寫 - 將編譯器應用於特定目錄
  2. 使用 "use memo" 選擇加入 - 僅編譯明確選擇加入的元件
  3. 執行階段閘道控制 - 使用功能標誌控制編譯

所有方法都允許您在全面推出前,在應用程式的特定部分測試編譯器。

使用 Babel 覆寫進行基於目錄的採用

Babel 的overrides選項讓您可以將不同的外掛程式套用到程式碼庫的不同部分。這非常適合逐個目錄漸進式採用 React Compiler。

基本配置

首先將編譯器套用到特定目錄:

擴展覆蓋範圍

隨著您建立信心,新增更多目錄:

使用編譯器選項

您也可以為每個覆寫配置編譯器選項:

使用 "use memo" 的選擇加入模式

為了獲得最大控制權,您可以使用compilationMode: 'annotation' 來僅編譯那些明確使用 "use memo"指令選擇加入的元件和鉤子。

注意

這種方法讓您能對個別元件和鉤子進行細粒度控制。當您想在特定元件上測試編譯器而不影響整個目錄時,這非常有用。

註解模式配置

使用指令

在您想要編譯的函式開頭新增"use memo"

使用compilationMode: 'annotation'時,您必須:

  • 在您想要最佳化的每個元件中新增"use memo"
  • 在每個自訂 Hook 中新增"use memo"
  • 記得在新元件中新增它

這讓您能精確控制哪些元件被編譯,同時評估編譯器的影響。

使用 Gating 的執行階段功能標誌

gating選項讓您能使用功能標誌在執行階段控制編譯。這對於執行 A/B 測試或根據使用者群組逐步推出編譯器非常有用。

Gating 如何運作

編譯器將最佳化的程式碼包裹在一個執行階段檢查中。如果閘門函數回傳true,則執行最佳化版本。否則,執行原始程式碼。

Gating 配置

實作功能標誌

建立一個匯出您的閘門函數的模組:

疑難排解採用問題

如果您在採用過程中遇到問題:

  1. 使用"use no memo" 暫時排除有問題的元件
  2. 查看 除錯指南以了解常見問題
  3. 修復 ESLint 外掛程式識別出的 React 規則違規
  4. 考慮使用 compilationMode: 'annotation' 以更逐步地採用

後續步驟