>業務組件的拆分粒度的討論是在最近的項目中經常拿來討論的問題,在這里闡述一下自己的看法。
## 組件的類型及開發著重點
### 1. UI組件
>[info]UI組件是指類似ant design提供的不耦合業務邏輯只負責對數據進行展示或本身不耦合任何業務邏輯,通過一些api的組合使用實現業務所需功能的組件。
UI組件的開發應該遵循其自己的UI設計規范,API開放的程度也應該盡可能的一致。UI組件不會因為業務的要求而改變組件的樣式/交互邏輯,是完全從通用性方面考慮的。
### 2. 業務UI組件
>[info]業務UI組件一般指在實際的業務開發中,將頁面中多次出現的/可復用的組件,將其共性抽離出來,將組件的不同點通過開放api的方式,實現組件的高復用性,提高開發效率,降低重復開發組件數量。
在我看來,業務UI組件在編寫時,更應該偏向于UI組件的方式,著重考慮組件的高復用性,在設計時應該盡可能的向UI組件的設計規范靠攏,在此基礎上在耦合適當的業務邏輯,在實現業務差異性時也不應該局限于當前業務的范圍。
比如一個組件在同一業務中不同位置存在的差異,可能只是背景顏色的不同,我們看到的應該不只是背景顏色這一點,而應該從開放自定義類名或樣式api來實現差異化,也就是說差異化的實現也應該更通用一些。
### 3. 業務組件
>[info]顧名思義,業務組件就是完全只適用于當前業務的組件。
該組件的通用性應該只適用于當前業務,api應該盡可能的精簡也就是說對外提供的可配置型的東西應該盡可能的少,差異化的實現要盡可能的少。一旦業務組件對外提供的api過多,其實就應該考慮該組件到底是業務組件還是業務UI組件的問題了。