GraphQL LogoGraphQL

基於 Web 的 GraphQL IDE 獲勝:Playground 和 GraphiQL 如何以及為何聯手

2020 年 4 月 3 日作者Rikki Schulte、Jason Kuhrt

Banner showing the Prisma and GraphQL Foundation logos with a :handshake: emoji between them

GraphiQL 的開端#

GraphiQL 最初公開提交於 2014 年。

Lee ByronHyo JeongAngel Gomez 首次發布時,目的是為 GraphQL 建立一個最小的參考 IDE 開發生態系統。 Greg Hurrell 建立了串流 graphql-language-service-parser,旨在強化 codemirror-graphql 模式。

目標是為人們提供建置自己的基於 Web 或桌面 IDE 工具所需的實用程式包,以及一個相對簡單的工具,供人們開始學習和應用語言,並探索架構。當時,LSP 尚未成為普遍接受的標準,而 VSCode 也尚未成為當今如此受歡迎的開發工具。

去年,這些原始工程師將三個儲存庫移交給 graphql 基金會:GraphiQL、codemirror-graphqlgraphql-language-service 套件。

快轉到現在,GraphiQL 現在被數十種語言中的 GraphQL 實作使用,以及數百個架構和執行時期。它用於從 HTTP 作業到查詢本地架構、資料科學工具,甚至用於物聯網平台的資料傳輸。您會在 AWS 儀表板、GitHub 開發人員工具中找到它,以及我們很榮幸看到此程式庫用於的更多地方。

進入遊樂場#

除了 GraphiQL 之外,我們許多人熟悉它的兄弟 - 美觀且功能強大的 GraphQL Playground。遵循 GraphiQL 的領導,它使用我們的 codemirror-graphql (InsomniaAltair 和許多其他也在這個俱樂部中!)。這就是為什麼這些工具的直接編輯體驗有如此多的相似之處。

Playground 正好是我們想要發生的。它幫助推動了我們的語言生態系統的發展,並為用戶提供了一個比更注重自訂的 GraphiQL 更容易的選項。它提供了許多優異的功能 - graphql-config 支援、多個標籤、i18n 和 http 伺服器中介軟體。

Prisma 將 Playground 捐贈給 GraphQL 基金會#

正如許多人成功猜測的那樣,Prisma 正在將 Playground 捐贈給 GraphQL 基金會。在 2019 年進入時,Prisma 設想了一個最終的 Playground 2.0,但隨後一個模組化的 GraphiQL 2 專案的出現顯示了一個巨大的協同效應機會,Prisma 轉向開發人員的模組化資料庫工具使這一切變得更加自然。

Playground 1.x 一直是 數十位貢獻者 的社群努力。Prisma 感謝所有在過程中提供幫助的貢獻者。Prisma 仍然深切致力於支援 GraphQL 語言的未來。例如,Prisma Labs 團隊 繼續專注於 GraphQL API 層,並 最近宣布Nexus 從一個架構建置程式庫轉換為一個完整的 成熟的 GraphQL API 架構

您喜愛的 Playground 功能#

為了公平起見,我們將保留許多相同的功能,無論是將它們引入核心還是提供隨 Playground 預設一起發布的外掛程式。

  • 多個標籤(GraphiQL 核心)
  • 每個操作標籤的標頭標籤(外掛程式)
  • 追蹤標籤(外掛程式)
  • Playground 文件瀏覽器(外掛程式)
  • 國際化(GraphiQL 核心)
  • graphql-config 支援,感謝我們在 Guild Dev 的優秀同事們提供的新功能,Prisma 已將許多其他專案委託給他們。
  • 易於使用的中間件

新功能#

這些新功能將隨新的 graphql@2.0.0 提供

  • vscode 風格命令面板(透過 monaco-editor
  • 跳至片段或其他類型定義
  • 從專案的來源檔案產生一系列操作
  • 更多可自訂的網路選項 - 每個專案的預設標頭,以及每個操作的標頭
  • 整合自訂驗證流程的輔助工具
  • 廣泛的主題、版面和元件自訂功能(您可以從 Playground 主題預設開始,然後從那裡開始工作!)
  • 自訂標籤和面板
  • 與原始創作者合作的一流 graphiql-explorer 外掛程式,我們的同事在 OneGraph

它將如何重新實作?#

Playground 2.0 將是一個 GraphiQL 預設,其中包括自訂主題以及自訂 Playground 文件瀏覽器外掛程式(作為 @orta 和其他使用者提出的新文件瀏覽器的替代方案),HTTP 標頭和追蹤標籤外掛程式。您可以在 GraphiQL 外掛程式 API 元議題GraphiQL 單一儲存庫中的其他 Playground 相關討論議題 中找到更多技術細節、正在進行的討論和待處理事項。

雖然 Playground 團隊的基本目標是與 Playground 1.0 相對齊,但團隊將接受關於建構於現有 GraphQL Playground 體驗的新功能和外掛程式提案。功能彙整 專案是查看我們已經為 Playground 預設值套件可以使用的外掛程式規劃了哪些內容的好地方,或者如果您沒有看到您正在尋找的內容,您也可以建立提案。

graphql-playground 儲存庫後續步驟#

現有的 graphql-playground 儲存庫將在封存前再進行一或兩次維護/錯誤修正版本。當然,您仍然可以分岔它。您可以在我們為此遷移建立的 graphql-playground 議題 中進一步了解這一點。

徵求貢獻者#

我們也在尋找貢獻者組成團隊來開發、支援和維護遊樂場預設值套件。目標是讓他們協助反覆運算並穩定外掛程式 API 工作,以及致力於貢獻和維護遊樂場預設值套件及其相關外掛程式。如果您有興趣,請在 徵求貢獻者 Github 議題 中留下意見。

您也可以追蹤 外掛程式 API 提案討論議題 以獲得更新,並參與我們專為遊樂場計畫建立的 discord 頻道