IOS 路由MGJRouter

319 阅读2分钟

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」。

背景

最开始想做路由,是因为当时app中有大量与H5之间的交互,原生和H5的跳转操作比较多比较频繁,新增一个跳转又涉及到改代码发版本,为了统一iOS、安卓和H5的跳转,引入了路由。

作用

后来发现路由,还可很多作用。Router就像是个调度中心,各个模块通过路由调度其他模块,模块之间不需要相互引用,调度方式更加统一,更加自由,能够实现解耦的作用,同时也为之后的组件化开发提供了基础。

MGJRouter就一个单例类,使用前需要通过注册组件,调用方通过URL调用服务方页面\

一、简单使用说明

使用一个类来统一管理注册的方法,再load方法中进行注册,就不会到处看到注册的代码,方便管理。
1、注册

image.png

2、调用

image.png

二、模块化中使用

1、要实现什么效果 ?

从app跳转到私有模块(我的模块),然后再从我的模块跳转到 私有模块(个人信息模块)
2、怎么实现?

1)首先先创建一个“我的”私有模块,在我的模块注册注册服务\

写一个类,在load 方法中注册

image.png

2)在app中调用OpenURl 方法进行跳转 跳转到我的模块

image.png

3)创建一个“个人信息”私有模块,在个人信息模块注册服务

写一个类,在load 方法中注册

image.png

4)在我的模块调用OpenURl 方法进行跳转

写一个按钮,这是这个按钮的事件方法

image.png

三、缺点

1、需要在内存中维护url-block的表,组件多了可能会有内存问题

2、url的参数传递受到限制,只能传递常规的字符串参数,无法传递非常规参数,如UIImage、NSData等类型

3、没有区分本地调用和远程调用的情况,尤其是远程调用,会因为url参数受限,导致一些功能受限

4、组件本身依赖了中间件,且分散注册使的耦合较多