發(fā)布于:2020-12-31 13:40:59
0
126
0
當人類決定嘗試登陸月球時,他們不得不從頭開始為該項目發(fā)明很多技術。這是一項艱苦,昂貴,耗時的工作,有很多錯誤的轉(zhuǎn)折和死胡同。這就是使用沒有人經(jīng)驗的系統(tǒng)時的感覺。當您遇到困難時,沒有經(jīng)驗豐富的人來回答您的問題。
我是卡西迪?威廉姆斯(Cassidy Williams),我一直在CodePen團隊中工作。最近,我們決定切換堆棧以 在React代碼之上使用Apollo和GraphQL,這是一個很棒的學習經(jīng)驗。我個人喜歡我們?nèi)绾畏浅DK化地組織組件,這與我們使用Redux進行組織的方式不同。但是,由于Apollo是一項相對較新的技術,因此在團隊采用它并隨著它的發(fā)展而不斷學習時,肯定會有一些利弊。
當我第一次尋找與Apollo有關的問題的答案時,那里并沒有太多東西。當您決定投資一個相對較年輕的技術時,即使是簡單的問題,也很難找到支持。這迫使您自己尋找內(nèi)幕,這可能是學習的好方法。這也意味著您可以幫助建立和塑造新生的社區(qū),并在其他人開始看到您幫助提高的工具中的價值時獲得回報。
對于那些不知道Apollo是什么的人,它是一個單一的查詢系統(tǒng),可幫助您在項目中大規(guī)模運行GraphQL。它為您建立了一個數(shù)據(jù)圖,以使您的所有微服務和客戶端以完全相同的方式相互交談。
僅憑單詞很難解釋,所以讓我們通過一個例子來談談。在CodePen的前端中,在給定的組件中,我們可能希望獲取有關當前登錄用戶的數(shù)據(jù)。以前,如果我們需要這些信息,我們必須設置某種中間件來處理調(diào)用,或在某處進行調(diào)用操作,或者只是將API調(diào)用保留在componentDidMount中,然后確保對所有不同的組件分別進行調(diào)用我們需要的數(shù)據(jù)元素。至少,我們需要與后端團隊聯(lián)系,以確保我們以所需的格式獲取數(shù)據(jù)。使用Apollo,在組件頂部,我們可以在這里放置這個小塊,它將返回當前登錄的用戶,其ID以及他們是否是CodePen Pro用戶。代碼如下:
現(xiàn)在,假設我實際上需要的數(shù)據(jù)更多,并且還需要獲取他們的頭像和用戶名。無需進行其他查詢或與后端團隊聯(lián)系以將該信息添加到API端點,而只需修改查詢即可:
瞧,我有我的數(shù)據(jù)!這就是擁有單個數(shù)據(jù)圖的力量。如果數(shù)據(jù)在圖形中,則可以對其進行查詢,并且前端可以根據(jù)需要獲取和使用該數(shù)據(jù)。
現(xiàn)在,這并不意味著要成為Apollo的推銷員。Apollo很棒,但是它也是新的,并且仍然在開發(fā)社區(qū)中立足。通常,當有新事物出現(xiàn)時,它會非常新鮮和令人興奮,并且如果它引入了新的概念供我們作為開發(fā)人員使用,那么這將是一個有趣的新世界。至少,直到我們遇到問題為止。
我在Apollo中遇到的很多事情之一就是它的錯誤消息令人非常不滿意。他們有相當普通的消息發(fā)送給您,因此如果您不熟悉它,可能很難調(diào)試。
因此,有一天,我去了很好的Stack Overflow,嘗試找出組件的問題所在。而且,令我震驚的是……那里沒有答案。完全沒有關于這個主題的問題!通常,當我在Stack Overflow上提出問題時,我可以在一個小時左右的時間內(nèi)得到很多答案。我等了幾個星期,但沒有回應。
因為我沒有一個可用的答案,所以我不得不仔細研究并真正熟悉使Apollo正常工作的代碼。再次,這是一個權衡。這花費了很多時間,精力和挫敗感。但是通過這種方式教給我很多東西。這也有助于揭開別人建造的黑匣子的神秘感,使我充滿信心,無論他們看起來多么出色,我都可以理解這個工具以及創(chuàng)作者。
我的Apollo問題有一些評論,但實際上一個多月沒有得到答案。經(jīng)過幾個同事的討論,我最終自己回答了這個問題,然后我仔細研究了這個問題。您如何通過遇到問題的人數(shù)來判斷框架是多么新穎或流行,這不是很有趣嗎?Vue.js目前在Stack Overflow上有大約38.5k個問題。React有超過150k。Apollo?在撰寫本文時,不到5,000個問題,其中約三分之一來自過去6個月!
很高興看到Apollo在開發(fā)者社區(qū)加快了步伐。僅基于Stack Overflow問題,GitHub問題甚至Twitter線程,您就會看到人們感到興奮,并分享他們遇到的困難和所學到的東西。
給開發(fā)人員的我的動作項目:當您開始使用嶄新的,閃亮的技術時,請談論它!提出問題,撰寫博客文章,在社交媒體上分享以及公開您的發(fā)現(xiàn)。您永遠不知道可以為誰提供幫助!您分享的內(nèi)容越多,其他人就會更容易找到您并回報您的青睞。