前言
这篇文章对于刚刚接触组件化人员参考用,是我对于组件化的一些理解,有不对的地方还望大家提出批评。
什么是组件化
app的构建看成是一个搭积木的过程,每个组件就是一个小积木,通过一个个积木你可以自由的组装成功各种形状(app或模块),所以组件化就是把App的功能拆分成一个一个组件的过程。
为什么要组件化
- 当业务需求量和团队规模达到一定程度的产物,也是目前一个合理的app架构的实践。
- 业务耦合比较严重,不能很快响应开发需求(本质)
- 多人开发
- 功能复用(多个app情况下比较明显 )
- 专注业务
- 单独开发测试,(更易优化)
- 统一交互,统一UI,规范
什么时候不考虑组件化
- 创业公司正在高速版本迭代
- 项目简单,功能单一
- 项目稳定了并且后续改动很小,最低运营项目
- 对组件化缺少相应的知识,没有充分的实践
什么是组件
提供相对独立,某类单一功能的代码集合。
功能组件:组件化最基础的组件,是业务组件的基石,可能依赖第三方库或其他功能组件
业务组件:提供某个业务集合的组件,一定依赖功能组件或第三方库
功能组件直接导入头部文件使用
业务组件利用中间件解耦使用
组件化方式
说的是解决业务组件间强耦合的方式。
- 运行时,代表的就是CasaTaloyum提出的
target-action
方案,利用运行时方式提供组件通信服务。 - 注册代理,这个很多大公司有使用,阿里,蘑菇街也有很多相关的开源和方案,总的思路就是每个组件有唯一的标识,启动时注册他们,通信时用url短链接去确定唯一的页面和组件。
关于两种方式网上有很多文章这里就不再赘述。
组件化一般步骤
- 合理的app架构的设计,分层
- 基础的发布管理系统
- 团队内规范文档
- 最基础的工具组件,直接依赖系统API,通用的基础功能
- 拆分功能组件,找出app中通用的功能(网络、缓存,音视频处理)
- 拆分UI组件,通用的UI控件(导航、特定的UI,弹出框登)
- 拆分业务组件,业务组件里面也可以继续拆分逻辑和UI组件
- 持续迭代和调整,文档沉淀,框架规范继承