「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」。
背景
最开始想做路由,是因为当时app中有大量与H5之间的交互,原生和H5的跳转操作比较多比较频繁,新增一个跳转又涉及到改代码发版本,为了统一iOS、安卓和H5的跳转,引入了路由。
作用
后来发现路由,还可很多作用。Router就像是个调度中心,各个模块通过路由调度其他模块,模块之间不需要相互引用,调度方式更加统一,更加自由,能够实现解耦的作用,同时也为之后的组件化开发提供了基础。
MGJRouter就一个单例类,使用前需要通过注册组件,调用方通过URL调用服务方页面\
一、简单使用说明
使用一个类来统一管理注册的方法,再load方法中进行注册,就不会到处看到注册的代码,方便管理。
1、注册
2、调用
二、模块化中使用
1、要实现什么效果 ?
从app跳转到私有模块(我的模块),然后再从我的模块跳转到 私有模块(个人信息模块)
2、怎么实现?
1)首先先创建一个“我的”私有模块,在我的模块注册注册服务\
写一个类,在load 方法中注册
2)在app中调用OpenURl 方法进行跳转 跳转到我的模块
3)创建一个“个人信息”私有模块,在个人信息模块注册服务
写一个类,在load 方法中注册
4)在我的模块调用OpenURl 方法进行跳转
写一个按钮,这是这个按钮的事件方法
三、缺点
1、需要在内存中维护url-block的表,组件多了可能会有内存问题
2、url的参数传递受到限制,只能传递常规的字符串参数,无法传递非常规参数,如UIImage、NSData等类型
3、没有区分本地调用和远程调用的情况,尤其是远程调用,会因为url参数受限,导致一些功能受限
4、组件本身依赖了中间件,且分散注册使的耦合较多