React 項(xiàng)目目錄結(jié)構(gòu)優(yōu)化

隨著項(xiàng)目功能越來(lái)越多竟痰,代碼量越來(lái)越龐大盘榨。隨之而來(lái)的就是項(xiàng)目本身變得有點(diǎn)難以維護(hù)和理解了郊愧。比如:

  • 一開(kāi)始沒(méi)有定開(kāi)發(fā)規(guī)范朴译,每個(gè)人都有自己不同的寫(xiě)法沸伏。
  • 創(chuàng)建和存放代碼文件的方式不同,導(dǎo)致目錄結(jié)構(gòu)開(kāi)始混亂动分。
  • 為了適應(yīng)某些需求毅糟,寫(xiě)了一些臨時(shí)代碼。這種代碼一多后期維護(hù)就變得難以理解澜公。
  • 頁(yè)面姆另、組件都有業(yè)務(wù)邏輯,到處是業(yè)務(wù)邏輯導(dǎo)致后期看代碼就像是捉迷藏坟乾。
  • 頁(yè)面迹辐、組件之間耦合性太強(qiáng)。比如通過(guò)十幾個(gè) props 和十幾個(gè) event 來(lái)連接某個(gè)組件甚侣。

這些問(wèn)題在項(xiàng)目初期還好明吩。但是如果功能越堆越多。于是我就在想殷费,如何去維護(hù)好這個(gè)項(xiàng)目呢印荔。我想到了一句話(huà):

高內(nèi)聚、低耦合

所以详羡,我對(duì)于我現(xiàn)在的 React 項(xiàng)目仍律,做了以下設(shè)計(jì)。

  • assets 目錄里面放所有的資源文件实柠。雖然在某些頁(yè)面里面放上一些圖片資源引用起來(lái)很方便水泉,但是頁(yè)面一多就會(huì)發(fā)現(xiàn)有很多圖片是一樣的。這時(shí)候統(tǒng)一存放資源文件就可以復(fù)用一些文件窒盐。避免不必要的重復(fù)文件占空間草则。
  • components 目錄里存放公共的組件。我對(duì)于組件的定義是盡量只實(shí)現(xiàn) UI 呈現(xiàn)方面的事情蟹漓,業(yè)務(wù)邏輯可以通過(guò)事件傳遞出去炕横,交給 page 和 module 來(lái)實(shí)現(xiàn)。
  • pages 目錄里存放路由級(jí)別的頁(yè)面牧牢。
    • 由于項(xiàng)目中使用了 redux看锉,所以每個(gè)頁(yè)面會(huì)有一個(gè) container 用來(lái)獲取 redux 數(shù)據(jù)和定義 dispatch 事件。
    • index 里面承載了大部分頁(yè)面邏輯的處理塔鳍,以及頁(yè)面結(jié)構(gòu)的呈現(xiàn)伯铣。
    • model 用于定義 redux state 以及數(shù)據(jù)操作方式。
    • components 目錄用于存放僅僅在本頁(yè)面中會(huì)用到的組件轮纫。
  • modules 目錄里面存放了非路由級(jí)別的功能模塊腔寡。它的目錄結(jié)構(gòu)和 pages 目錄完全一致。只不過(guò)這個(gè)目錄下的模塊不能被路由直接訪(fǎng)問(wèn)到掌唾。
  • service 目錄用于配置和定義 API 接口放前。
  • utils 用于定義公共工具函數(shù)忿磅。

并且,想了一些原則:

  • 所有資源都要存放在同一 assets 目錄下凭语,方便復(fù)用和查找葱她。
  • component 組件(不管是公共的還是頁(yè)面私有的)盡量不接觸業(yè)務(wù),僅僅用于 UI 展現(xiàn)似扔。
  • page 和 module 通過(guò) container 和 model 來(lái)連接 redux 數(shù)據(jù)吨些,通過(guò) index 來(lái)處理大多數(shù)頁(yè)面邏輯。
  • 通過(guò) props 和回調(diào)函數(shù)傳遞數(shù)據(jù)盡量不要超過(guò)三層炒辉。如果一個(gè) prop 屬性會(huì)存在 A -> B -> C -> D -> E豪墅,并且回調(diào)函數(shù)是從 E 到 A 的,這必然不合理黔寇。
  • 為了低耦合偶器,盡量少的使用 props 和 events。定義 events 的參數(shù)也是也少越好缝裤。
  • page 不存在 props屏轰,module 盡量少定義 props,降低耦合性倘是。
  • 一般只在 page 中使用 module亭枷,避免 module 中使用其他 module 形成套娃。

最后

以上都是我自己基于高內(nèi)聚搀崭、低耦合的一些項(xiàng)目?jī)?yōu)化的想法。我去網(wǎng)上找也沒(méi)有找到太適合我當(dāng)前項(xiàng)目的方案猾编。暫且一試瘤睹。
如果有更好的最佳實(shí)踐,歡迎留言交流溝通答倡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末轰传,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘪撇,更是在濱河造成了極大的恐慌获茬,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔既,死亡現(xiàn)場(chǎng)離奇詭異恕曲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)渤涌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)佩谣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人实蓬,你說(shuō)我怎么就攤上這事茸俭〉趼模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵调鬓,是天一觀的道長(zhǎng)艇炎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腾窝,這世上最難降的妖魔是什么缀踪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮燕锥,結(jié)果婚禮上辜贵,老公的妹妹穿的比我還像新娘。我一直安慰自己归形,他們只是感情好托慨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著暇榴,像睡著了一般厚棵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔼紧,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天婆硬,我揣著相機(jī)與錄音,去河邊找鬼奸例。 笑死彬犯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的查吊。 我是一名探鬼主播谐区,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逻卖!你這毒婦竟也來(lái)了宋列?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤评也,失蹤者是張志新(化名)和其女友劉穎炼杖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盗迟,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坤邪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诈乒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罩扇。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喂饥,到底是詐尸還是另有隱情消约,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布员帮,位于F島的核電站或粮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捞高。R本人自食惡果不足惜氯材,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硝岗。 院中可真熱鬧氢哮,春花似錦、人聲如沸型檀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胀溺。三九已至裂七,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仓坞,已是汗流浹背背零。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留无埃,地道東北人徙瓶。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嫉称,于是被迫代替她去往敵國(guó)和親倍啥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355