架構概觀
本文件連同執行時期架構和編譯器架構,描述了 Relay 的高階架構。目標讀者包括有興趣貢獻 Relay 的開發人員、希望利用 Relay 的基礎建構區塊來建立更高階 API 的開發人員,以及任何有興趣深入了解 Relay 內部運作的人。對於想要學習如何使用 Relay 來建構產品的開發人員來說,導覽是最佳資源。
核心模組
Relay 由三個核心部分組成
- Relay 編譯器: 一個 GraphQL 到 GraphQL 的最佳化編譯器,提供用於轉換和最佳化查詢以及產生建置成品的一般工具。該編譯器的一個新穎功能是,它透過輕鬆將使用這些指令的程式碼轉換為標準且符合規範的 GraphQL,促進了以自訂指令形式進行的全新 GraphQL 功能實驗。
- Relay 執行時期: 一個全功能、高效能的 GraphQL 執行時期,可用於建構更高階的用戶端 API。該執行時期具有正規化的物件快取、最佳化的「寫入」和「讀取」操作、用於增量提取欄位資料的通用抽象概念(例如用於分頁)、用於移除未引用快取條目的垃圾收集、具有任意邏輯的樂觀更新、支援建構訂閱和即時查詢等等。
- React/Relay: 一個將 Relay 執行時期與 React 整合的高階產品 API。對於大多數產品開發人員來說,這是 Relay 的主要公共介面,其具有用於提取查詢資料或定義可重複使用元件的資料相依性的 API(例如
useFragment
)。
請注意,這些模組是鬆散耦合的。例如,編譯器會以執行時期消耗的明確格式發出查詢的表示形式,因此可以根據需要替換編譯器的實作。React/Relay 僅依賴於執行時期的完善說明公共介面,因此可以替換實際的實作。我們希望這種鬆散耦合能夠讓社群探索新的使用案例,例如使用 Relay 執行時期開發專用的產品 API 或將執行時期與 React 以外的檢視函式庫整合。
此頁面有幫助嗎?
請協助我們透過 回答幾個快速問題,讓網站變得更好.