簡評:使用 GraphQL 可以大大簡化客戶端狀態(tài)管理部分的代碼。
切換到React
故事背景:在 2016 年,Pathwright的前端團(tuán)隊就開始將客戶端的代碼從 Backbone & Marionette 切換到 React。 對于我們來說 UI 的聲明性模型比 MVC 模型更具意義。
我們使用 flux 架構(gòu)來管理隨著應(yīng)用狀態(tài),隨著業(yè)務(wù)變得復(fù)雜,它添加了越來越多間接層。當(dāng)我們著手處理 store 或者狀態(tài)樹中的一個分支邏輯的時候,實際上是將服務(wù)端業(yè)務(wù)數(shù)據(jù)和關(guān)系復(fù)制到客戶端上。
我們擁有優(yōu)雅的聲明式 React 組件,但是數(shù)據(jù)層確是 action、reducers、異步中間件和去賦范的數(shù)據(jù)邏輯。
這一切都感覺非常的錯誤。
切換到GraphQL
當(dāng)我們嘗試 GraphQL 的時候馬上就愛上了它。我們將 GraphQL 替換了一堆 REST API。當(dāng)我們 UI 使用這些新的 GraphQL 時不再需要 store。我們通常需要創(chuàng)建一個 stores,action 等待,但是最終我們將這部分內(nèi)容刪除了,因為實在沒有必要。