一、为什么要搞组件化
1.实现模块之间解耦、减少项目的编译时间,提升业务开发效率
各个库单独管理,可以进行权限设置,只有各个组件相关人员才能修改组件代码,可以一定程度保证代码的安全性
2.大团队中避免合并项目冲突影响整个团队的开发。
3.方便各个组件单独提取出来为其他项目使用。
二、组件化方案?
1. 蘑菇街方案- 基于URL和协议
特点:
(1)、通过URL传递简单参数
(2)、通过协议调用复杂参数
缺点:
(1)、需要组件向ModuleManager注册URL,会浪费内存。
(2)、参数传递方案有2种,不利于管理和维护。
2.CTMeditor方案- 基于Category和Target-Action
通过category来输出组件的对外调用方法的。
优点:
(1)、不需要注册URL
(2)、基于Target-Action模式实现组件间的调用
(3)、同一种方法可以实现简单参数和复杂参数的调用。
(4)、区分app内部调用和外部调用。
外部调用:
其实就是在appdelegate的代理方法中调用我们的performActionWithUrl方法,最终将url解析成target和action的形式
调用我们的内部调用方法。
url如下:
scheme://[target]/[action]?[params]
url sample:
aaa://targetA/actionB?id=1234&title=title
[url query]: id=1234&title=title
[url path]: /actionB
[url host]: targetA
三、版本管理
版本管理使用cocoapods,每个组件都拆分成独立的pod库,并生成一个sepc配置文件,来进行组件间的依赖的版本管理。
四、组件化的缺点:
- 1.增加开发者的学习成本
- 2.人少的团队间效率会降低
网友评论