一個(gè)簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端項(xiàng)目架構(gòu)是什么樣的_第1頁(yè)
一個(gè)簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端項(xiàng)目架構(gòu)是什么樣的_第2頁(yè)
一個(gè)簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端項(xiàng)目架構(gòu)是什么樣的_第3頁(yè)
一個(gè)簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端項(xiàng)目架構(gòu)是什么樣的_第4頁(yè)
一個(gè)簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端項(xiàng)目架構(gòu)是什么樣的_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、React技術(shù)棧的一大優(yōu)勢(shì)在于社區(qū)繁榮,你業(yè)務(wù)中需要實(shí)現(xiàn)的功能基本都 能找到對(duì)應(yīng)的開(kāi)源庫(kù)。但繁榮也有不好的一面要實(shí)現(xiàn)同樣的功能,有太多項(xiàng)選擇擇,到底選哪個(gè)?本文要介紹一個(gè)12.7k的開(kāi)源工程 Bulletproof React這個(gè)工程為構(gòu)建簡(jiǎn)潔、強(qiáng)大、可擴(kuò)展的前端工程架構(gòu)的方方面面給出了建議。歡迎加入人類高質(zhì)量前端框架群,帶飛Bulletproof React 是什么取也中“of Rea比與我們常見(jiàn)的腳手架(比方CRA)不同,后者的作用是根據(jù)模版 創(chuàng)立一個(gè)新工程。而前者包含一個(gè)完整的React全棧論壇工程:React Hook ForkvxForrvukReact Filial FormURL

2、狀態(tài)URL狀態(tài)包括:uH params (/app/$dynamicParam)qaerg /匕/s (/app?dynamicParam = l)這局部狀態(tài)通常是路由庫(kù)處理,比方react-routes-dowo總結(jié)本文節(jié)選了局部Bulletproof React中推薦的方案,有沒(méi)有讓你認(rèn)可的觀點(diǎn)呢?歡迎在評(píng)論區(qū)交流工程架構(gòu)中的最正確實(shí)踐。Log in to your accountEmail AddressRequiredPasswordRequiredLog inRegister作者通過(guò)這個(gè)工程舉例,展示了與工程架構(gòu)相關(guān)的13個(gè)方面的內(nèi)容,比方:文件目錄該如何組織工程化配置有什么推薦寫(xiě)業(yè)

3、務(wù)組件時(shí)該怎么規(guī)范怎么做狀態(tài)管理AP/層如何設(shè)計(jì)等等 Application Overview0 Project Configuration Style GuideB Project Structure Components And StylingAPI LayerS State Management/ Testing! Error HandlingM Securityw Performance彈 Deployment西 Additional Resources限于篇幅有限,本文介紹其中局部觀點(diǎn)。不知道這些觀點(diǎn)你是否認(rèn)同呢?文件目錄如何組織工程推薦如下目錄形式:十 assets#靜態(tài)資源十 C

4、OkVpOMlt$#公共組件十一config#全局配置十 features#特性十 kooks#公用kooks十 lih#二次導(dǎo)出的第三方庫(kù)十一一providers#應(yīng)用中所有providers#路由配置十 stores#全局狀態(tài)stores十 test#測(cè)試工具、Mock服務(wù)器+ - types十 utiVs#全局類型文件#通用工具函數(shù)其中,features目錄與com?o八e八ts目錄的區(qū)別在于:com?o八c八ts存放全局公用的組件,而features存放業(yè)務(wù)相關(guān)特性。比方我要開(kāi)發(fā)評(píng)論模塊,評(píng)論作為一個(gè)特性,與他相關(guān)的所有內(nèi)容都存在于 features/co目 錄下。評(píng)論模塊中需要輸入框

5、,輸入框這個(gè)通用組件來(lái)自于方作陽(yáng)八小區(qū)目錄。所有特性相關(guān)的內(nèi)容都會(huì)收斂到領(lǐng)演心目錄下,具體包括:src/featu res/xxx-featu re+ - api#與特性相關(guān)的請(qǐng)求+ - assets#與特性相關(guān)的靜態(tài)資源十 一,。出?。八ents #與特性相關(guān)的組件+ - utils#與特性相關(guān)的工具函數(shù)+ - i八dcx.ts# 入口特性導(dǎo)出的所有內(nèi)容只能通過(guò)統(tǒng)一的入口調(diào)用,比方:一- kooks#與特性相關(guān)的kooks一- routes#與特性相關(guān)的路由+一-一 stores#與特性相關(guān)的狀態(tài)stores一一 types#與特性相關(guān)的類型申明import Commc 八 4K ) fro

6、 ha /features/coiveits,1而不是:import ) froM /fc”九(rcs/co3MC八ts/cokp。八c八ts/CoMMotB4r這可以通過(guò)配置ESUt實(shí)現(xiàn):(rules: -restricted -imports:zerrorSpattern: /feato(丫es/關(guān)/關(guān)口,)/其他配置)相比于將特性相關(guān)的內(nèi)容都以扁平的形式存放在全局目錄下(比方將特性的 hooks存放在全局hooks目錄),以色岫/es目錄作為相關(guān)代碼的集合能夠有效 防止工程體積增大后代碼組織混亂的情況。怎么做狀態(tài)管理工程中并不是所有狀態(tài)都需要保存在中心化的store中,需要根據(jù)狀態(tài)類型區(qū)

7、別 對(duì)待。組件狀態(tài)對(duì)于組件的局部狀態(tài),如果只有組件自身以及他的子孫組件需要這局部狀態(tài),那 么可以用use.State或useRcduccr保存他們。應(yīng)用狀態(tài)與應(yīng)用交互相關(guān)的狀態(tài),比方翻開(kāi)彈窗、通知、改變黑夜模式等,應(yīng)該遵循將狀 態(tài)盡可能靠近使用他的組件的原那么,不要什么狀態(tài)都定義為全局狀態(tài)。以Buhtproof React中的例如工程舉例,首先定義通知相關(guān)的狀態(tài):/ bulletproof-react/src/stores/iotificatio.tsexport co八st lAScNotificatio八St。夕。=wcateNotificati(msSto3(sct) = (notifi

8、cation: 口addNotificatioi: (notification =s況(stnte)二(ratifications: .state.八otificatio八s, id:八4八。以()sotificatio八)?),WisMissNatificati。八:(id)=set(state) = (notification: state.八atificati(ms.fi(ter(Aatificatio2 = laotificatioi.id /= id).!)再在任何使用通知相關(guān)的狀態(tài)的地方引用lASeNotificatioiStore,比方:/ hiAlletproof-react/

9、sirc/coipoMyts/Notification/Notificatiois.tsximport useNotificatioiStore frokv /stores/八otificaticm;import Notification fro% ./Notification1;export co八st Notification = ()=co八st notification, disMissNotificatio八二 nseNotificatio八Stoire。;return (八o力ficatio八s.儂叩(hotificatio八)= (Notificationkeg=(notific

10、atio 八.id八 atificati。八二notification。八 Dismiss=disMissNatificatioQ/八 atificati。八二notification。八 Dismiss=disMissNatificatioQ/);這里使用的狀態(tài)管理工具是加也八小 除此之外還有很多可選方案:context + hooksredux + redux toolkitiobxcostatejotairecoilxstate這些方案各有特點(diǎn),但他們都是為了處理應(yīng)用狀態(tài)。服務(wù)端緩存狀態(tài)對(duì)于從服務(wù)端請(qǐng)求而來(lái),緩存在前端的數(shù)據(jù),雖然可以用上述處理應(yīng)用狀態(tài)的工 具解決,但服務(wù)端緩存狀態(tài)相比于應(yīng)用狀態(tài),還涉及到緩存失效、序列化數(shù)據(jù)等 問(wèn)題。所以最好用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論