iOS路由(MGJRouter)的实现

所属分类: 软件编程 / IOS 阅读数: 1168
收藏 0 赞 0 分享

背景

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

作用

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


路由选择

目前github优秀的路由设计已经有很多,如JLRoutes,MGJRouter,CTMediator。

JLRoutes提供的功能比较复杂,有很多我个人用不上的功能,所以没有选择。

CTMediator更适合业务比较复杂的情况,MGJRouter的使用上更加容易上手,功能也比较简单,更加适用于页面跳转这种业务比较多的场景。所以我项目中选择了MGJRouter

JLRoutes

  1. 集成简单
  2. 可以处理各种各样的url
  3. 支持通配符
  4. 支持多个scheme
  5. 比较纯粹,不支持打开页面后的值回传。要自己再加工。

MGJRouter

  1. 代码简单易懂
  2. 功能全面
  3. 支持push值回传
  4. 支持多scheme
  5. openUrl时支持一个userInfo (造成了跟系统的不统一,多出来的参数还是可以放到url中,传对象的时候有点用)(模块内部传对象可以用,模块间的话不应该传对象,会造成耦合)

MGJRouter

MGJRouter就一个单例类,使用前需要通过注册组件,调用方通过URL调用服务方页面,通过路由表的映射关系进行关联,调用方可以传入复 杂的参数、对象等。

基本跳转主要是注册组件,调用openURl方法,传入参数即可实现。

[MGJRouter registerURLPattern:@"mgj://foo/bar" toHandler:^(NSDictionary *routerParameters) {
  NSLog(@"routerParameterUserInfo:%@", routerParameters[MGJRouterParameterUserInfo]);
}];

[MGJRouter openURL:@"mgj://foo/bar"];

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

url注册管理类

很多人说没有反向传值的方法,其实和我们其他跳转一样,传参数的时候使用block即可解决。

[MGJRouter openURL:@"LWT://Test3/PushMainVC"withUserInfo:@{
  @"navigationVC" : self.navigationController,
  @"block":^(NSString * text){NSLog(@"%@",text); },
  }
      completion:nil];

代码下载

demo中有MGJRouter各个方法的使用案例,包括跳转,获取组件,正反向传参。

MGJRouter使用Demo

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

iOS逆向教程之跟踪函数调用详解

这篇文章主要给大家介绍了关于iOS逆向教程之跟踪函数调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

iOS App连续闪退时上报crash日志的方法详解

iOS App 有时可能遇到启动必 crash 的绝境:每次打开 App 都闪退,无法正常使用App。下面这篇文章主要给大家介绍了iOS App连续闪退时上报crash日志的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

如何为Xcode添加删除整行、复制整行及在下方新建一行快捷键详解

xcode是苹果公司向开发人员提供的集成开发环境,开发者们经常会使用到,下面这篇文章主要给大家介绍了关于如何为Xcode添加删除整行、复制整行及在下方新建一行快捷键的相关资料,需要的朋友可以参考下。
收藏 0 赞 0 分享

iOS指纹登录(TouchID)集成方案详解

这篇文章主要为大家详细介绍了iOS指纹登录TouchID的集成方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS动态验证码实现代码

本文通过实例代码给大家介绍了ios动态验证码的实现方法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

iOS模块化开发浅析

本文给大家分析了IOS在模块发开发时候的相关注意点以及简单代码做了分享,有兴趣的朋友参考学习下。
收藏 0 赞 0 分享

iOS中封装.framework及使用的方法详解

这篇文章主要给大家介绍了关于iOS中封装.framework及使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
收藏 0 赞 0 分享

WKWebView、WebView和JS的交互方式详解

这篇文章主要给大家介绍了关于WKWebView、WebView和JS的交互方式,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

ios wkwebview离线化加载h5资源解决方案

本篇文章主要介绍了ios wkwebview离线化加载h5资源解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

iOS实现带指引线的饼状图效果(不会重叠)

饼状图对大家来说应该都不陌生,下面这篇文章主要给大家介绍了关于iOS实现带指引线的饼状图效果(不会重叠)的相关资料,文章通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享
查看更多