溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

可擴(kuò)展React項(xiàng)目的技巧有哪些

發(fā)布時(shí)間:2021-10-28 14:33:35 來源:億速云 閱讀:108 作者:iii 欄目:web開發(fā)

本篇內(nèi)容介紹了“可擴(kuò)展React項(xiàng)目的技巧有哪些”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 了解如何在本地和全局狀態(tài)之間組織狀態(tài)

React是一個(gè)基于UI的當(dāng)前狀態(tài)來管理UI的庫。作為一個(gè)開發(fā)者,你的工作就是組織好組成你的應(yīng)用程序的狀態(tài)的保存位置。一些開發(fā)人員更喜歡將每個(gè)數(shù)據(jù)保留在redux  store,以跟蹤所有可用狀態(tài)。但你真的需要為了打開或關(guān)閉一個(gè)簡單的下拉菜單而向你的狀態(tài)管理器派遣一個(gè)動作嗎?

與其使用Redux來跟蹤應(yīng)用程序內(nèi)部的每一個(gè)狀態(tài),不如將一些狀態(tài)保留在本地,以避免過度設(shè)計(jì)你的應(yīng)用程序。

根據(jù)經(jīng)驗(yàn),你可以提出以下問題:

  • 應(yīng)用程序的其他部分是否關(guān)心此數(shù)據(jù)?

  • 你是否需要能夠基于此原始數(shù)據(jù)創(chuàng)建其他派生數(shù)據(jù)?

  • 是否使用相同的數(shù)據(jù)來驅(qū)動多個(gè)組件?

  • 對你來說,能夠?qū)⑦@個(gè)狀態(tài)恢復(fù)到給定的時(shí)間點(diǎn)有價(jià)值嗎?

  • 你是否要緩存數(shù)據(jù)(例如,使用已存在的狀態(tài)而不是重新請求)?

  • 你是否想在熱重載UI組件時(shí)保持這些數(shù)據(jù)的一致性(交換時(shí)可能會丟失其內(nèi)部狀態(tài))?

使用局部狀態(tài)的組件更加獨(dú)立和可預(yù)測。

2. 學(xué)習(xí)測試的好處,并從一開始就做

編寫自動化測試的問題是,到了一定程度,不可能不花費(fèi)大量的時(shí)間和資源來手動測試你的React項(xiàng)目。

當(dāng)開始一個(gè)項(xiàng)目時(shí),因?yàn)槟愕拇a庫相對較小,所以很容易為跳過編寫測試代碼找理由。如果你的React應(yīng)用中只有5到10個(gè)組件,那么編寫自動化確實(shí)感覺是個(gè)苦差事,沒有明顯的好處。但是當(dāng)你的組件超過五十個(gè),而且你有多個(gè)高階組件時(shí),手動測試你的項(xiàng)目可能要花上一整天的時(shí)間,即便如此,也可能會有bug悄然而至而無人察覺。

是的,編寫測試代碼將幫助你使你的代碼更加模塊化,它將幫助你更快地發(fā)現(xiàn)錯(cuò)誤,并防止在生產(chǎn)中崩潰。但是,當(dāng)手動測試不能再驗(yàn)證代碼是否按預(yù)期工作時(shí),自動化測試的最終目的是幫助你擴(kuò)展項(xiàng)目。

但是你不能在不習(xí)慣的時(shí)候突然寫測試代碼,這就是為什么你必須從頭開始。如果你不知道從哪里開始,那就從集成測試開始吧,因?yàn)闇y試最重要的部分就是驗(yàn)證你的組件是否能正常工作。

3. 采用工具來幫助你擴(kuò)展

通常,你不需要在應(yīng)用程序開始時(shí)向你的React項(xiàng)目添加許多工具。但既然我們在討論將React應(yīng)用擴(kuò)展到一個(gè)龐大的代碼庫,我想說的是,你需要采用所有好的工具來幫助你。

  • 為了在團(tuán)隊(duì)成員之間提供一致的代碼模式并減少語法錯(cuò)誤,需要使用Prettier和ESLint。強(qiáng)大的實(shí)用程序庫,如React  Router、date-fns和response -hook-form都是不錯(cuò)的選擇。

  • 添加TypeScript和Redux可能會被延遲,直到你的應(yīng)用程序容易出現(xiàn)類型錯(cuò)誤,并且你的應(yīng)用程序的部分需要反復(fù)使用相同的狀態(tài),你需要使其全局可用。

  • 從一開始就實(shí)現(xiàn)狀態(tài)管理是不需要的,因?yàn)镽eact本身已經(jīng)想到了管理狀態(tài)的最佳方式。

  • Bit (Github)來管理和分享你的組件作為獨(dú)立的構(gòu)件。這意味著你要孤立地測試和渲染每個(gè)組件。這將保證以后更容易維護(hù)和重用它。

  • 你還可以使用Next.js代替Create React App來啟動你的項(xiàng)目。

這些工具將幫助你維護(hù)一個(gè)龐大的React代碼庫,但要注意,你添加的每一個(gè)工具都會增加你項(xiàng)目的復(fù)雜程度。在決定采用此工具之前,請先進(jìn)行研究。

4. 很好地組織項(xiàng)目文件

在擴(kuò)展React應(yīng)用方面,我學(xué)到的一個(gè)最好的技巧是,組織好你的項(xiàng)目文件并給它們命名可以加快你的進(jìn)度。一些開發(fā)人員傾向于將 index.js  編寫為組件目錄中的主文件,如下所示:

可擴(kuò)展React項(xiàng)目的技巧有哪些

這似乎是合理的,因?yàn)楫?dāng)你將組件導(dǎo)入到其他文件中時(shí),該語句將變成以下形式:

import Button from '../components/Button';

但是請考慮在代碼編輯器中并排打開它們時(shí):

可擴(kuò)展React項(xiàng)目的技巧有哪些

老實(shí)說,所有這些 index.js 會讓任何人感到困惑。但如果你把那些index.js文件重命名為組件名,你的導(dǎo)入語句就會顯得有些丑陋。

import Button from '../components/Button/Button';

我的團(tuán)隊(duì)最終決定,既要有以組件命名的文件,又要有導(dǎo)出組件的 index.js 文件。

可擴(kuò)展React項(xiàng)目的技巧有哪些

我們還把CSS和單元測試文件放在組件目錄里面。這樣一來,每個(gè)組件目錄都可以成為一個(gè)獨(dú)立的組件。

可擴(kuò)展React項(xiàng)目的技巧有哪些

5. 建立你的UI /邏輯組件庫

你不應(yīng)該等到你的項(xiàng)目達(dá)到很大的時(shí)候才去建立一個(gè)組件庫,你可以隨時(shí)隨地共享組件。每當(dāng)一個(gè)新的組件被構(gòu)建,使用Bit來跟蹤它,并將其分享到你團(tuán)隊(duì)在Bit.dev上的組件集合,或者在你自己的服務(wù)器上。

如前所述,(真正的)獨(dú)立組件易于維護(hù),并且在共享和記錄文檔時(shí),也易于重用。

組件庫不僅適用于UI組件。邏輯也應(yīng)包括在內(nèi)——在React的情況下,作為自定義鉤子(大體上)。

6. 使用hooks將邏輯與組件分離

隨著項(xiàng)目的發(fā)展,你可能會注意到,你的一些組件的邏輯似乎會被重復(fù)使用。為了共享組件的邏輯,你需要寫一個(gè)自定義的鉤子。

鉤子是簡單地將某些值返回到其調(diào)用者的函數(shù),這就是為什么你可以實(shí)現(xiàn)相同的模式以在組件之間重用邏輯的原因。

“可擴(kuò)展React項(xiàng)目的技巧有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI