part1. 如何減少代碼中的指針錯(cuò)誤捞蛋,我們知道空指針錯(cuò)誤會(huì)試整個(gè)頁(yè)面掛掉,所以這個(gè)錯(cuò)誤要盡量避免
最近讀到了一篇阿里是如何減少前端空指針錯(cuò)誤的文章姑曙,里面介紹了兩個(gè)比較常見(jiàn)的寫(xiě)法來(lái)避免這襟交,一個(gè)是寫(xiě)了一個(gè)工具函數(shù)遍歷對(duì)象,判斷有沒(méi)有值伤靠,沒(méi)有返回空
,一個(gè)是使用的時(shí)候判斷前面一個(gè)父對(duì)象是不是空再使用
。其實(shí)我們?cè)谝郧暗捻?xiàng)目里面為了避免空指針就是使用的類(lèi)似方法的辦法,然后這次寫(xiě)了個(gè)工具方法實(shí)踐第一張方法宴合,但是在項(xiàng)目中如果遇到了復(fù)雜的對(duì)象這個(gè)方法就很難寫(xiě)了焕梅,例如:對(duì)象和數(shù)組混用的情況
。
然后在這次項(xiàng)目的數(shù)據(jù)初始化中用到了這種寫(xiě)法卦洽,感覺(jué)還不錯(cuò).
arr&&arr.length>0&&arr.map((value)=>{
return <component value={value}/>);
});
以及
let initArr = arr.map((v)=>{
return v;
}) || []
以及
let xx = obj&&obj.obj2&&obj.obj2[0]||{};
這三種方法基本上可以解決空指針的問(wèn)題
part2. 如何寫(xiě)組件更利于維護(hù)
之前的項(xiàng)目組件管理都有點(diǎn)混亂贞言,這次組件目錄按功能先分一級(jí)目錄
,然后按名稱(chēng)分二級(jí)目錄
,沒(méi)錯(cuò)就是按名字分二級(jí)目錄阀蒂,然后每個(gè)文件夾必須有個(gè)index.js作為組件入口该窗,這樣命名比較容易找主組件,這種命名和目錄結(jié)構(gòu)很多開(kāi)源的項(xiàng)目有用到蚤霞。
part3. 不同功能的職能分配
首先功能模塊 大概有 store用于存儲(chǔ)數(shù)據(jù)和action
酗失,model用于確定數(shù)據(jù)模型,數(shù)據(jù)初始化需要的二級(jí)接口也在model中調(diào)用
昧绣,組件渲染頁(yè)面和組件中不設(shè)計(jì)到store的操作函數(shù)规肴,遇到操作store則調(diào)用store的action
。
分配好各模塊職能后夜畴,不同代碼函數(shù)不同分類(lèi)拖刃,使代碼不過(guò)與太亂利于維護(hù)。
part4. 關(guān)于store的定義
之前項(xiàng)目差不多是一類(lèi)數(shù)據(jù)用一個(gè)store贪绘,這次仔細(xì)想了下兑牡,兩個(gè)store已經(jīng)可以應(yīng)付大部分的需求,如果遇到新需求另加store税灌,一個(gè)mainStore主要數(shù)據(jù)
均函,一個(gè)controlStore控制頁(yè)面
。
part5. 暫時(shí)只想到這么多垄琐,項(xiàng)目完結(jié)后再補(bǔ)充