iOS实用功能

组件化面试问答?

2021-07-15  本文已影响0人  傲骨天成科技

一、为什么要搞组件化

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配置文件,来进行组件间的依赖的版本管理。

四、组件化的缺点:

上一篇下一篇

猜你喜欢

热点阅读