iOS组件化详解

 前言:首先我们应该知道什么是组件化?组件化的优势?组件化方案?通过本文章都能一一找到答案

一、组件化?

组件化就是将APP拆分成各个组件(模块),同时解除这些模块的耦合,然后 通过主工程将项目所需要的组件组合起来。

二、组件优缺点?

组件化优点:

1.组件可独立运行,提高代码复用性

2.组件化后项目的代码结构更加清晰,追踪问题、修复bug

3.不同业务组件相互独立

组件化缺点:

1.增加代码的冗余,组件化颗粒度越细,中间代码越多

2.增加项目复杂度

三、组件化方案?

想要达到每个组件之间的相对低耦合,就是断掉横向依赖,引入中间件将依赖下沉至中间件。

iOS组件化详解

四、组件中间件设计方案?

方案:

一、URLRoute+Procotol

1.需要注册组件

2.调用方通过URL调用服务方页面,URL和服务方页面的关系通过路由表(map)映射,路由表需要维护

3.调用方通过Procotol调用页面类服务组件(传递复杂对象)

二、CTMediator(Target-Action runtime(NSClassFromString))

1.不需要注册组件,通过runtime(NSClassFromString)查找

2.参数传递统一用dictionary

备注:

Target-action实现

/*

其内部使用Runtime调用,传递三个参数

*当前需要调用类名

*当前需要调用类方法名

*需要传的参数

*/

- (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params shouldCacheTarget:(BOOL)shouldCacheTarget

 

URLRoute实现

//注册路由

[[Router sharedInstance] registerURL:@"app://home/detail" with:^UIViewController *{ return [HomeDetailViewController new]; }];

//通过url获取

UIViewController *vc = [[Router sharedInstance] openURL:@"app://home/detail"]

 

五、URLRoute&CTMediator选择?

1.URLRoute动态性更好,适用于页面跳转业务较多的场景

2.CTMediator核心代码少,更适合业务较杂,调用关系相对简单

 

iOS组件化详解

上一篇:IOS系统 兼容性 safiri浏览器对selected ="selected" 选中项 没反应


下一篇:uni-app使用阿里矢量字体图标