GraphQL片段應(yīng)用於避免查詢(xún)中重複字段,提高可維護(hù)性並啟用模塊化代碼。 1。定義可重複使用的字段選擇,例如用戶(hù){id name email avatar}上的fragment用戶(hù)字段,以消除重複。 2.使用...在任何查詢(xún)返回用戶(hù)中的用戶(hù)字段以集中更新 - 添加一個(gè)字段只需要一個(gè)更改。 3。與組件分類(lèi)的片段,例如在React中定義usercardfragment,以聲明精確的數(shù)據(jù)需求。 4。通過(guò)嵌套片段(例如包括用戶(hù)域)的後場(chǎng)來(lái)構(gòu)建複雜查詢(xún)。 5。遵循最佳實(shí)踐:使用清晰的名稱(chēng),保持碎片為重點(diǎn),利用工具進(jìn)行驗(yàn)證,並避免過(guò)度築巢。 6。在現(xiàn)實(shí)世界應(yīng)用中,從組件片段中撰寫(xiě)父級(jí)查詢(xún),在片段更改時(shí)啟用自動(dòng)更新。片段減少錯(cuò)誤,提高可擴(kuò)展性,並在查詢(xún)時(shí)間解決,而無(wú)需運(yùn)行時(shí)成本,這對(duì)於有效的GraphQL開(kāi)發(fā)至關(guān)重要。
GraphQl片段是GraphQl最被低估但功能最強(qiáng)大的功能之一。它們讓您定義可重複使用的查詢(xún)片段,使您的代碼更清潔,更可維護(hù)且易於錯(cuò)誤。您可以在多個(gè)查詢(xún)或組件上重複相同的字段,而是可以定義一次並在需要的任何地方重複使用它們。

這是碎片在日常開(kāi)發(fā)中真正改變的方式。
什麼是GraphQl片段?
片段是可以在查詢(xún),突變或其他片段中共享的字段的指定選擇。您將其定義一次,然後使用...
語(yǔ)法將其擴(kuò)展到您的操作中。

例如:
用戶(hù)上的fragment用戶(hù)field { ID 姓名 電子郵件 頭像 }
現(xiàn)在,您可以在返回User
任何查詢(xún)中使用它:

查詢(xún)getCurrentuser { 當(dāng)前使用者{ ...用戶(hù)場(chǎng) } } 查詢(xún)getuser($ id:id!){ 用戶(hù)(id:$ id){ ...用戶(hù)場(chǎng) } }
這避免了每次獲取用戶(hù)時(shí)重複相同的四個(gè)字段。
為什麼使用片段?關(guān)鍵好處
1。避免重複,提高可維護(hù)性
當(dāng)您需要添加一個(gè)新字段(例如, phone
)以獲取用戶(hù)的每個(gè)地方,則只需更新片段即可。無(wú)需尋找每個(gè)查詢(xún)。
沒(méi)有片段,您可以手動(dòng)更新多個(gè)查詢(xún)。有了片段,這是一個(gè)單行的變化。
2。與組件分配數(shù)據(jù)要求
在前端框架中,例如與阿波羅客戶(hù)端進(jìn)行反應(yīng),通常在使用它的組件中定義片段。
const usercardfragment = gql` 用戶(hù)上的fragment usercardfields { ID 姓名 頭像 角色 } `;
然後,任何呈現(xiàn)UserCard
的父母查詢(xún)都可以包括...UserCardFields
。這遵循數(shù)據(jù)共置的原理 - 該組件準(zhǔn)確地聲明了它需要的數(shù)據(jù)。
3。啟用模塊化和可擴(kuò)展代碼
隨著您的應(yīng)用程序的增長(zhǎng),查詢(xún)複雜性也是如此。片段讓您構(gòu)建像樂(lè)高積木之類(lèi)的查詢(xún)。
例如:
郵政上的片段{ ID 標(biāo)題 內(nèi)容 作者 { ...用戶(hù)場(chǎng) } 創(chuàng)建 }
現(xiàn)在, PostFields
重新使用UserFields
。這種嵌套使事物保持乾燥和分層。
使用片段的最佳實(shí)踐
- 清楚地命名:使用描述性名稱(chēng),例如
UserProfileFields
或CommentListItem
,因此很明顯使用它們的位置。 - 保持它們的重點(diǎn):片段應(yīng)反映一個(gè)邏輯數(shù)據(jù)單元,理想地與UI組件或域?qū)ο蠼壎ā?/li>
- 與工具結(jié)合使用:Apollo客戶(hù)端,繼電器和其他客戶(hù)端可以驗(yàn)證您的片段與實(shí)際模式兼容,並警告如果缺少字段,則可以警告。
- 避免過(guò)度粘貼:雖然嵌套片段強(qiáng)大,但太多的層可能會(huì)使查詢(xún)難以遵循。使用判斷。
現(xiàn)實(shí)世界中的片段
在基於組件的應(yīng)用程序中,每個(gè)組件導(dǎo)出其片段。高級(jí)查詢(xún)將這些片段組合在一起。
示例結(jié)構(gòu):
// useravatar.js 導(dǎo)出const useravatarfragment = gql` 用戶(hù){ 頭像 姓名 } `; // userbio.js 導(dǎo)出const userbiofragment = gql` 用戶(hù){ 姓名 生物 網(wǎng)站 } `; // userProfile.js const userProfilequery = gql` 查詢(xún)UserProfile($ ID:ID!){ 用戶(hù)(id:$ id){ ... useravatarfragment ... Userbiofragment } } `;
這樣,當(dāng)UserBio
需要一個(gè)新字段時(shí),您只需更新該片段,並且查詢(xún)會(huì)自動(dòng)包含它。
片段不會(huì)添加運(yùn)行時(shí)開(kāi)銷(xiāo),它們?cè)诰幾g/查詢(xún)時(shí)間下解決。他們純粹是開(kāi)發(fā)人員的體驗(yàn)。
基本上,如果您多次編寫(xiě)相同的字段,則應(yīng)使用片段。這不是魔術(shù),但是隨著時(shí)間的流逝,它會(huì)產(chǎn)生很大的不同。
以上是GraphQl片段的功能可重複使用的查詢(xún)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

隨著前後端分離的趨勢(shì)越來(lái)越普及,API的設(shè)計(jì)和使用也變得越來(lái)越重要。在Go語(yǔ)言中使用GraphQL建構(gòu)API是一種流行的選擇,因?yàn)镚raphQL允許前端開(kāi)發(fā)人員可以按照自己的需求從後端取得資料。然而,GraphQL具有獨(dú)特的設(shè)計(jì)和屬性,開(kāi)發(fā)人員需要遵循一些最佳實(shí)踐才能確保良好的效能和可維護(hù)性。以下是在Go語(yǔ)言中使用GraphQL建立API的最佳實(shí)踐:定義Grap

隨著網(wǎng)路科技的不斷發(fā)展,API已經(jīng)成為了各種軟體之間相互交流的重要方式。 API能夠提供統(tǒng)一的資料接口,使得不同的軟體可以互相存取和使用。然而,隨著API的數(shù)量和規(guī)模的不斷增大,如何快速且有效率地處理API資料的查詢(xún)和操作成為了重要的問(wèn)題。在這個(gè)問(wèn)題上,PHP和GraphQL可以提供一個(gè)非常有效的解決方案。本文將針對(duì)這個(gè)解決方案進(jìn)行一些簡(jiǎn)單的介紹和分析。 PHP概

GraphQL是一個(gè)強(qiáng)大的API查詢(xún)語(yǔ)言,可以大幅簡(jiǎn)化資料擷取和操作流程。 PHP作為一種廣泛使用和支援的程式語(yǔ)言,也可以輕鬆地使用GraphQLAPI來(lái)存取各種資料來(lái)源。但是,對(duì)於PHP開(kāi)發(fā)人員來(lái)說(shuō),如何在PHP應(yīng)用程式中使用GraphQLAPI的最佳實(shí)踐方法還是需要一些指導(dǎo)。在本文中,我們將深入探討如何在PHP中使用GraphQLAPI。 1.安裝和配

如何使用 Node.js 進(jìn)行前端應(yīng)用的開(kāi)發(fā)?以下這篇文章為大家介紹一下Node開(kāi)發(fā)前端應(yīng)用的方法,涉及到表現(xiàn)層應(yīng)用的開(kāi)發(fā)。我今天分享的方案是針對(duì)簡(jiǎn)單場(chǎng)景的,旨在讓前端開(kāi)發(fā)人員不必掌握太多關(guān)於 Node.js 的背景知識(shí)和專(zhuān)業(yè)知識(shí),即使沒(méi)有程式碼編寫(xiě)經(jīng)驗(yàn),也能完成一些簡(jiǎn)單的服務(wù)端開(kāi)發(fā)任務(wù)。

在Beego中使用GraphQL進(jìn)行API開(kāi)發(fā)GraphQL是一種由Facebook開(kāi)發(fā)的現(xiàn)代API查詢(xún)語(yǔ)言,它提供了一種更有效率、更靈活的方式來(lái)建立API。與傳統(tǒng)RESTfulAPI不同的是,GraphQL允許客戶(hù)端定義其需要的數(shù)據(jù),服務(wù)端只傳回客戶(hù)端請(qǐng)求的數(shù)據(jù),從而減少了不必要的資料傳輸。 Beego是一個(gè)用Go語(yǔ)言寫(xiě)的開(kāi)源Web框架,它提供了一系列的工

GraphQL是一種新興的API查詢(xún)語(yǔ)言,它能夠精確地在客戶(hù)端指定需要傳回的數(shù)據(jù),從而減少伺服器對(duì)於不必要資料的傳輸,提高網(wǎng)路請(qǐng)求和資料傳輸?shù)男?。相較於傳統(tǒng)的RESTful風(fēng)格API,GraphQL更有靈活、更有效率。在這篇文章中,我們將探討如何在PHP中使用GraphQL來(lái)建立API介面。安裝GraphQL函式庫(kù)在開(kāi)始使用GraphQL之前,需要先安裝Graph

GraphQL 是 API 的開(kāi)發(fā)人員和消費(fèi)者以及背後的組織的強(qiáng)大推動(dòng)者。 GraphQL 實(shí)現(xiàn)的所有細(xì)節(jié)和功能都在 GraphQL Schema 中列出。

隨著前後端分離的流行,傳統(tǒng)的RESTfulAPI已經(jīng)無(wú)法滿(mǎn)足現(xiàn)代網(wǎng)路的需求。問(wèn)題在於每個(gè)資源的API都需要單獨(dú)設(shè)計(jì),而且每次請(qǐng)求只會(huì)返回一個(gè)固定的結(jié)構(gòu),這就導(dǎo)致了大量的冗餘請(qǐng)求和數(shù)據(jù),程序變得非常笨重,不利於開(kāi)發(fā)和維護(hù)。 GraphQL的出現(xiàn)就解決了這個(gè)問(wèn)題,它是一種新型的API查詢(xún)語(yǔ)言和運(yùn)行時(shí),能夠有效地減少網(wǎng)路資料傳輸量和請(qǐng)求次數(shù)。與R
