美文网首页我的组件化日记
iOS 我的组件化日记 part2:思考

iOS 我的组件化日记 part2:思考

作者: 破弓 | 来源:发表于2017-08-14 10:26 被阅读56次

    看完组件是什么,如何拆分组件,各大门派的做法后,我在现有的大工程内效仿MGJ,工程内加入MGJRouter+加了一个协议映射服务类的中间件.全局页面跳转不再写push+present,A模块调用B模块的方法也不再直接调用,组件化完成了!!!本宝宝还太年轻

    接着上篇的笑话继续.
    再完成对自己项目笑话似的组件化之后,我自己也在想这也太TM简单了把!还值当大家吵来吵去,还值当大家争相效仿.所以回头看看有没有什么我漏掉了,还真有.

    1.拾遗

    Limboy>蘑菇街 App 的组件化之路文章最后有这么一段:

    拾遗.png

    壳工程是什么东西?

    2.开窍
    多产品线.jpg
    为了更好的分工协作,团队会安排团队成员各自维护一个相对独立的业务组
    件。这个时候我们引入组件化方案,一是为了解除组件之间相互引用的代码硬
    依赖,二是为了规范组件之间的通信接口; 让各个组件对外都提供一个黑盒服
    务,而组件工程本身可以独立开发测试,减少沟通和维护成本,提高效率。
    
    进一步发展,当团队涉及到转型或者有了新的立项之后,一个团队会开始维护
    多个项目App,而多个项目App的需求模块往往存在一定的交叉,而这个时候组
    件化给我们的帮助会更大,我只需要将之前的多个业务组件模块在新的主App
    中进行组装即可快速迭代出下一个全新App。
    

    以上图与文完全摘自:iOS组件化实践方案-LDBusMediator炼就

    组件化==>目的:减少沟通和维护成本,提高效率
    组件化==>更远大的理想:多个基础组件+多个业务组件可以随意组合演化出多个App.

    组合的例子:

    SuperJunior.jpg
    韩国组合SuperJunior一共有13个人.为了应对市场需求(更好的赚中国fans的钱),13人内抽出6个人再加上两个华裔的练习生=新组合SuperJunior-M.
    SuperJunior-M.jpg

    这个例子也很好的说明了组件化成功与否的标志.即完成组件化后,各个组件能否进行任意的拆装组合就是一个新的App.能==>组件化成功.

    3.如何即完成目的又实现远大的理想

    前面所述可以看出组件化还是为了代码的解耦,当然组件化带来解耦是一种更凶悍的解耦==>代码的物理性解耦.
    那么通过Xcode如何实现代码的物理性解耦呢?
    首先想到多工程开发,多工程联合编译.

    多工程联合.png
    写了demo试了试,没有什么明显的缺点.

    但最终选了pod,因为pod可以说就是为组件化而生的.平时我们用pod是为了给工程加一些很好用的第三方库.但回想下,第三方库是不是就像一些组件插在了工程里:

    AFNetworking==>网络组件
    SDWebImage==>图片组件
    

    而我们要做的就是将自己的业务模块梳理抽象成一个个pod,然后插回自己的工程里.而这个工程也就是开头提到的壳工程.


    文章参考:
    iOS组件化实践方案-LDBusMediator炼就
    IOS组件化-多工程联编

    相关文章

      网友评论

        本文标题:iOS 我的组件化日记 part2:思考

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