为何要组件化开发,组件化方案有哪些
讲述开始之前,你有没想清楚你为何选择组件化开发,究竟他能给你带来哪些好处,对你能提升多少,对团队直接有什么优势?,比如公共组件下沉,通用的style,res等相通用的资源文件管理,网上有很多组件化方案,该如何选择,这是一条很难的决定,
组件化模块划分
其实从上图中你就可以发现,组件化,从上下来分一共四层,APP壳工程、常规业务组件层、基础业务组件层、基础功能组件层。我们从下往上一层层划分
基础功能组件层
基础组件层很好理解就是存放公共库,方便进行管理,他并不管理你外部要做什么,其实我们进行对基础库划分,又很难的选择,那些该下沉到基础库,那些该放到组件层,进行扩展。说一下我的思路吧。
1.网络请求
2.公共工具类
3.基础ui
4.BaseActivity/BaseFragment等
这就是基础库,当然你还可以根据通用性,记性工具类,下沉。但是这个选择要想清楚。你会问那些算是公共工具类,这个选择,其实很难决定。评论区见
基础业务组件层
其实我管这层叫做,功能组件扩展层,为什么这么说呢,比如我们要增加一个统计功能,每个页面都需要,那你还不能修改base,那我为何不在base 上扩展一层,来供组件依赖。
那就是他有些扩展工具,例如
1.统计模块
2.分享模块
3.上传组件模块
4.图片预览模块
5.录制相关模块
6.地图模块
7.更多扩展等等
常规业务组件层
就是我们的业务层了,业务层分为很多模块,简单说几个模块吧
1.这里就不做具体说明,根据情况划分,我们按照功能模块来进行划分,例如登录注册,个人中心,消息模块,音视频,直播模块等。他可以单独运行和打包在手机中进行测试。
APP壳工程
壳工程依赖了需要集成的业务组件,它可能只有一些配置文件,没有任何代码逻辑。根据你的需要选择集成你的业务组件,不同的业务组件就组成了不同的APP。
组件之间必须遵循以下规则:
只有上层的组件才能依赖下层组件,不能反向依赖,否则可能会出现循环依赖的情况;
同一层之间的组件不能相互依赖,这也是为了组件之间的彻底解耦;
组件化方案
已经有很多成熟的组件化框架供我们选择,也可以参考成熟的组件化搭建一套完整的组件化方案。以下我列举一些进行参考:
阿里的atlas
一个很值得大家学习的项目,和架构方案MvpArms
组件化cc,这是我觉得很好的一套组件化方案cc
结束之前给你们贴个博客,我觉得讲的挺好浅谈项目架构重构之路——组件化与MVP
到这里就结束了,最后贴出来我司的组件化整体模块。
上图我要说一下因为我们数据统计是自己传日志文件,就在base上进行扩展,方便管理,并且不修改base任何代码,进行功能拆分,并且放一些公共模块。例如CC包,就是模块之间进行通讯的一个桥梁,因为我们并未选择阿里ARouter路由模式,commonLibrary,中也放了一些通用的dialog 和工具。
resLibrary就是整合资源管理,将所有的style,color,anim,drawble统一放在资源lib中进行管理。
app中包含推送消息分发,包含三方库的初始化,和Main主模块,你会问道mianActivity的fragment去哪里了,其实在个模块下。