看完组件是什么,如何拆分组件,各大门派的做法后,我在现有的大工程内效仿MGJ,工程内加入MGJRouter+加了一个协议映射服务类的中间件.全局页面跳转不再写push+present,A模块调用B模块的方法也不再直接调用,组件化完成了!!!本宝宝还太年轻
接着上篇的笑话继续.
再完成对自己项目笑话似的
组件化之后,我自己也在想这也太TM简单了把!还值当大家吵来吵去,还值当大家争相效仿.所以回头看看有没有什么我漏掉了,还真有.
1.拾遗
Limboy>蘑菇街 App 的组件化之路文章最后有这么一段:
壳工程是什么东西?
2.开窍
为了更好的分工协作,团队会安排团队成员各自维护一个相对独立的业务组
件。这个时候我们引入组件化方案,一是为了解除组件之间相互引用的代码硬
依赖,二是为了规范组件之间的通信接口; 让各个组件对外都提供一个黑盒服
务,而组件工程本身可以独立开发测试,减少沟通和维护成本,提高效率。
进一步发展,当团队涉及到转型或者有了新的立项之后,一个团队会开始维护
多个项目App,而多个项目App的需求模块往往存在一定的交叉,而这个时候组
件化给我们的帮助会更大,我只需要将之前的多个业务组件模块在新的主App
中进行组装即可快速迭代出下一个全新App。
以上图与文完全摘自:iOS组件化实践方案-LDBusMediator炼就
组件化==>目的:减少沟通和维护成本,提高效率
组件化==>更远大的理想:多个基础组件+多个业务组件可以随意组合演化出多个App.
组合的例子:
韩国组合
SuperJunior
一共有13个人.为了应对市场需求(更好的赚中国fans的钱),13人内抽出6个人再加上两个华裔的练习生=新组合SuperJunior-M
.这个例子也很好的说明了组件化成功与否的标志.即完成组件化后,各个组件能否进行任意的拆装组合就是一个新的App.能==>组件化成功.
3.如何即完成目的又实现远大的理想
前面所述可以看出组件化还是为了代码的解耦,当然组件化带来解耦是一种更凶悍的解耦==>代码的物理性解耦.
那么通过Xcode如何实现代码的物理性解耦
呢?
首先想到多工程开发,多工程联合编译.
写了demo试了试,没有什么明显的缺点.
但最终选了pod,因为pod可以说就是为组件化而生的.平时我们用pod是为了给工程加一些很好用的第三方库.但回想下,第三方库是不是就像一些组件
插在了工程里:
AFNetworking==>网络组件
SDWebImage==>图片组件
而我们要做的就是将自己的业务模块梳理抽象成一个个pod,然后插回自己的工程里.而这个工程也就是开头提到的壳工程
.