版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度兼職業(yè)務(wù)員線上線下銷售合作合同2篇
- 二零二五年度農(nóng)業(yè)科技示范園農(nóng)民勞務(wù)合作合同
- 二零二五年度智能交通系統(tǒng)股東股權(quán)交易及技術(shù)支持協(xié)議3篇
- 2025年度大型養(yǎng)殖場(chǎng)租賃征收補(bǔ)償協(xié)議書(shū)3篇
- 2025農(nóng)村兄弟家庭財(cái)產(chǎn)分割與分家協(xié)議書(shū)
- 2025年度年度教育機(jī)構(gòu)兼職教師教學(xué)資源共享與保護(hù)條款3篇
- 二零二五年度智能化農(nóng)機(jī)設(shè)備買賣合作協(xié)議3篇
- 二零二五年度農(nóng)村村委會(huì)村莊農(nóng)業(yè)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整與改造合同
- 2025年石材加工與安裝一體化服務(wù)合同3篇
- 二零二五年度新能源工廠設(shè)備整體轉(zhuǎn)讓協(xié)議3篇
- 地質(zhì)勘探勞務(wù)分包合同
- 上海市徐匯區(qū)位育中學(xué)六年級(jí)上學(xué)期期末英語(yǔ)試題(含聽(tīng)力)
- 2023中國(guó)光大銀行杭州分行招聘客戶經(jīng)理筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2024中國(guó)食藥同源大健康產(chǎn)業(yè)消費(fèi)洞察與產(chǎn)業(yè)發(fā)展分析白皮書(shū)
- 2023-2024學(xué)年廣東省佛山市南海區(qū)、三水區(qū)九年級(jí)(上)期末英語(yǔ)試卷
- 蘇教版科學(xué)六年級(jí)上冊(cè)期末測(cè)試卷附完整答案【典優(yōu)】
- 二年級(jí)上冊(cè)數(shù)學(xué)解決問(wèn)題60道附參考答案【典型題】
- DZ∕T 0215-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 煤(正式版)
- 山東省濟(jì)南市槐蔭區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題(含答案解析)
- 家長(zhǎng)會(huì)課件:小學(xué)五年級(jí)家長(zhǎng)會(huì)課件
- 出現(xiàn)產(chǎn)品質(zhì)量問(wèn)題退換貨承諾
評(píng)論
0/150
提交評(píng)論