Vue組件化開發(fā)思考
一般說到組件,我首先想到的是彈窗,其他就大腦空白了。
因為覺得這個是在項目中最常用的功能,提取出來方便復用的才是組件~
然而我才發(fā)現(xiàn)這個想法是有問題的。
我發(fā)覺可能從意識上把Vue的組件和UI庫的組件(彈窗之類的)混淆了。。。
緣起于最近的一個表單開發(fā),頁面上有2個是聯(lián)動菜單的選項。
首先想到的是,這個樣式和選擇地址的那個聯(lián)動菜單,完全一樣哈~
(廢話,同一個項目 當然要保持ui風格的相同?。。?br />
不過差別在于 我這個是 一個1級 一個2級, 地址那個是4級的.
然后我就想著把那個地址的組件引進來用,發(fā)現(xiàn)這是個寫死4級的
這個時候我只想到2種辦法
1,分別改寫成1級選項和2級選項的2個組件(好像比較low)
2,引用4級聯(lián)動組件,改寫成可選1級選項或2級選項(有點麻煩,到時候還要測地址沒被我改壞)
3,重寫一個可以通用無限聯(lián)動菜單(方便可選級的)
最后選了3,自己重新搞了個。
至于為什么沒有整合2,主要考慮到這兩個組件所處的業(yè)務頁面不同邏輯也有些差異:
1獲取列表的邏輯可能不同,是一次性獲取4級還是每次只獲取1級或2級,
這個不確定的話,做成通用組件就都要處理了
2我這個是直接彈選項的,地址那個是跳新頁面再點擊彈選項的
我這個可以父子組件傳遞數(shù)據(jù),地址那個用了vuex(非父子)
總之就是實現(xiàn)成本和維護成本高,復用價值沒那么高。
相當于2個頁面都各自有一個樣式相同邏輯不同的組件。
這完全是2個組件~
復制其通用樣式部分,在各自內部實現(xiàn)其業(yè)務邏輯。
兩個組件放在不同的板塊內,相互獨立,方便管理和維護。
這個時候 再結合vue組件化的圖來看 你會清楚
對于組件化開發(fā)
分治(自有業(yè)務邏輯)比復用(相同邏輯) 更為重要!
復雜的業(yè)務邏輯配合vuex更方便實現(xiàn)組件化~
所以我理解組件化的組件是應該泛指是 高內聚低耦合(某phper講給我的專業(yè)名詞,不知道放這用對不對哈)的~