美文网首页iOS实用功能
组件化面试问答?

组件化面试问答?

作者: 傲骨天成科技 | 来源:发表于2021-07-15 16:36 被阅读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配置文件,来进行组件间的依赖的版本管理。

    四、组件化的缺点:

    • 1.增加开发者的学习成本
    • 2.人少的团队间效率会降低

    相关文章

      网友评论

        本文标题:组件化面试问答?

        本文链接:https://www.haomeiwen.com/subject/ntcmpltx.html