什么是组件化?
组件化其实就是页面跳转的映射,也包含了页面跳转相关功能。
组件化项目和传统项目的区别
传统项目中
我们通常情况下会有一个common和一个app模块,业务中的逻辑都写在app中,各个功能模块放到不同的包下,这样做主要有以下几个的缺点:
- 无论分包做的再好,随着项目的增大,项目会逐渐失去层次,别人来接手的时候会很吃力;
- debug一个小功能的时候,每次修改代码都需要重新build整个项目,这样显的很不合理;
- 多人合作开发,在版本管理中,很容易出现冲突和代码覆盖的问题;
组件化项目中
按照功能划分各个业务组件模块(例如:微信可以划分出chat,contract,find,mine四个大模块),之前的包变成现在的模块,增加了层次感;每个功能模块可以单独编译,加快了编译速度,也为提供单元模块测试提供了支持;多人开发只负责自己的模块,直接避免了版本管理的冲突。
旧的模块间交互方式
怎么实现组件化?实现原理?
实现组件化的关键在于设计,通过 APT + JavaPoet + 注解 的方式,自动生成路由组和路由页面,也包括页面跳转中的 传参、拦截、回调等功能。
有什么优缺点?
优点
- 高度解耦:不相互依赖,但可以彼此交互;
- 灵 活:即可以自由拆卸,又可以互相组合;
- 单独编译功能模块,加快了编译速度,提高开发效率,
- 独立打包每个功能模块,为模块单元测试提供了支持;
- 统一版本管理,多人开发只负责自己的模块,直接避免了版本管理的冲突;
缺点
几乎没有缺点
有没有更好的实现方式?
暂时没想到,欢迎交流!