组件化学习

原文地址:

https://casatwy.com/iOS-Modulization.html

下面是对作者的思想的一些总结,不代表我们自己的组件化也要这么做(或者这么做,或者不这么做),我们自己的组件化还需要在实践中不断完善,这里先理解清楚作者的意图。

远程调用和本地调用分开

远程调用就是app外部调用app的某个模块
本地调用就是app内部模块间的相互调用

理由是:

  1. 远程App调用处理入参的过程比本地多了一个URL解析的过程,这是远程App调用特有的过程
  2. 对于无响应请求的处理方式:远程和本地可能不一样,所以要分开。如果都采用同样的方式,对于本地调用无响应的结果,很可能产品经理会不同意展示一个404页面,而导致架构改变,而加班。

不使用URL注册,使用runtime机制即可,不维护注册列表

使用openURL的方式实现组件化是错误的

理由是:openURL的方式无法传递非常规参数。

组件化方案中的去model设计

参数最好以字典的方式去传递
实现方式:

  1. CTMediator 提供转发的基础服务
  2. CTMediator+CTMediatorModuleAActions 提供和模块A有关系的所有调起
  3. Target_A提供具体要执行方法
  4. 调用模块依赖被调用模块的Category,例如想要调起A模块的页面,要依赖CTMediator+CTMediatorModuleAActions。
  5. category中定义的具体方法,限制了传参,可以保证只有满足正确的参数,才可以被执行。

一些安全措施

如何防止别人通过url调用本地页面:远程调用和本地调用分开后,这个问题就好解决了,采用给action添加native前缀去做的,凡是带有native前缀的就都只允许本地组件调用。

posted @ 2017-07-09 18:21  张驰小方块  阅读(237)  评论(0编辑  收藏  举报