>业务组件的拆分粒度的讨论是在最近的项目中经常拿来讨论的问题,在这里阐述一下自己的看法。
## 组件的类型及开发着重点
### 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组件的问题了。