Vue組件化開發(fā)思考
一般說到組件,我首先想到的是彈窗,其他就大腦空白了。
因?yàn)橛X得這個(gè)是在項(xiàng)目中最常用的功能,提取出來方便復(fù)用的才是組件~
然而我才發(fā)現(xiàn)這個(gè)想法是有問題的。
我發(fā)覺可能從意識(shí)上把Vue的組件和UI庫的組件(彈窗之類的)混淆了。。。
緣起于最近的一個(gè)表單開發(fā),頁面上有2個(gè)是聯(lián)動(dòng)菜單的選項(xiàng)。
首先想到的是,這個(gè)樣式和選擇地址的那個(gè)聯(lián)動(dòng)菜單,完全一樣哈~
(廢話,同一個(gè)項(xiàng)目 當(dāng)然要保持ui風(fēng)格的相同?。。?br />
不過差別在于 我這個(gè)是 一個(gè)1級(jí) 一個(gè)2級(jí), 地址那個(gè)是4級(jí)的.
然后我就想著把那個(gè)地址的組件引進(jìn)來用,發(fā)現(xiàn)這是個(gè)寫死4級(jí)的
這個(gè)時(shí)候我只想到2種辦法
1,分別改寫成1級(jí)選項(xiàng)和2級(jí)選項(xiàng)的2個(gè)組件(好像比較low)
2,引用4級(jí)聯(lián)動(dòng)組件,改寫成可選1級(jí)選項(xiàng)或2級(jí)選項(xiàng)(有點(diǎn)麻煩,到時(shí)候還要測(cè)地址沒被我改壞)
3,重寫一個(gè)可以通用無限聯(lián)動(dòng)菜單(方便可選級(jí)的)
最后選了3,自己重新搞了個(gè)。
至于為什么沒有整合2,主要考慮到這兩個(gè)組件所處的業(yè)務(wù)頁面不同邏輯也有些差異:
1獲取列表的邏輯可能不同,是一次性獲取4級(jí)還是每次只獲取1級(jí)或2級(jí),
這個(gè)不確定的話,做成通用組件就都要處理了
2我這個(gè)是直接彈選項(xiàng)的,地址那個(gè)是跳新頁面再點(diǎn)擊彈選項(xiàng)的
我這個(gè)可以父子組件傳遞數(shù)據(jù),地址那個(gè)用了vuex(非父子)
總之就是實(shí)現(xiàn)成本和維護(hù)成本高,復(fù)用價(jià)值沒那么高。
相當(dāng)于2個(gè)頁面都各自有一個(gè)樣式相同邏輯不同的組件。
這完全是2個(gè)組件~
復(fù)制其通用樣式部分,在各自內(nèi)部實(shí)現(xiàn)其業(yè)務(wù)邏輯。
兩個(gè)組件放在不同的板塊內(nèi),相互獨(dú)立,方便管理和維護(hù)。
這個(gè)時(shí)候 再結(jié)合vue組件化的圖來看 你會(huì)清楚
對(duì)于組件化開發(fā)
分治(自有業(yè)務(wù)邏輯)比復(fù)用(相同邏輯) 更為重要!
復(fù)雜的業(yè)務(wù)邏輯配合vuex更方便實(shí)現(xiàn)組件化~
所以我理解組件化的組件是應(yīng)該泛指是 高內(nèi)聚低耦合(某phper講給我的專業(yè)名詞,不知道放這用對(duì)不對(duì)哈)的~
相關(guān)文章
vue實(shí)現(xiàn)全匹配搜索列表內(nèi)容
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)全匹配搜索列表內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09vue3?使用setup語法糖實(shí)現(xiàn)分類管理功能
這篇文章主要介紹了vue3?使用setup語法糖實(shí)現(xiàn)分類管理,本次模塊使用 vue3+element-plus 實(shí)現(xiàn)一個(gè)新聞?wù)镜暮笈_(tái)分類管理模塊,其中新增、編輯采用對(duì)話框方式公用一個(gè)表單,需要的朋友可以參考下2022-08-08