HHRouter实践回顾

上家公司独立开发,而且是从无到有的,不是那种先让外包做一个版本然后从上边改的那种,这样就比较灵活了,而且看别人的代码并不是一件轻松惬意的事儿。

我最初认识HHRouter是上上家公司的最后一段时间,我们打算对已有项目进行重构的,之前这个项目是前端和原生混合开发的,性能不是特别好。重构的时候我们就选用了路由模式,这个模式主要就是解决界面耦合的(个人理解,感觉用过之后对它的理解还是比较浅的,在这里只讲下我对它的使用吧)。然后上家公司的项目是个商城类的APP,感觉用这个模式还是挺好的,毕竟据说淘宝、京东等APP也是用的路由模式。。。

路由模式也有好几种第三方可以选择,我们最终选择了HHRouter这个第三方,这个是我的领导定的,感觉我遇到HHRouter也是一种机缘,哈哈。。。

好了,废话不多说,下面我们就来谈论下我使用HHRouter这个第三方的具体方法吧。

首先,需要创建一个基于HHRouter的单例类,这个类就放APP中所有的viewcontroller,然后在这个类中需要实现一个初始化的方法,并在.h中声明

HHRouter实践回顾_第1张图片
屏幕快照 2017-09-09 上午9.00.45.png
屏幕快照 2017-09-09 上午9.05.11.png

这个就是需要写在初始化方法里的,好了,接下来看看怎么获取这些VC吧。
既然我们要用这个单例类来获取这些VC,那么我们就需要在didFinishLaunchingWithOptions这个方法里实现初始化路由这个方法:


屏幕快照 2017-09-09 上午9.09.20.png

然后在需要使用这个VC的地方


屏幕快照 2017-09-09 上午10.15.31.png

这样调用,这种方式不用在这个类中导入launchVC的头文件

那么问题就来了,一般我们导入头文件的时候传值可以在第二个类的.h文件中属性描述,还有block这些传值方式好像都不一样了,那么这个HHRouter该怎么传值呢?请往下看
1、字符串拼接传值


屏幕快照 2017-09-09 上午10.42.23.png

这个将字符串拼接的方法类似于属性描述传值


HHRouter实践回顾_第2张图片
屏幕快照 2017-09-09 上午10.44.49.png

这个是在目标VC里取值的方法

2、block
在launchVC中相当于声明吧


HHRouter实践回顾_第3张图片
屏幕快照 2017-09-09 上午11.59.07.png

然后


HHRouter实践回顾_第4张图片
屏幕快照 2017-09-09 下午12.00.21.png

这样使用。当然,声明的时候也可以在callBlock后边进行字符串拼接,这样这些拼接的参数就是map:toBlock后边的params字典中的键值对。注意多个参数字符串拼接的时候要使用&符号隔开

如果你要传递一个model的话可以先把model转化成json形似,然后再转化成字符串进行拼接,至于怎么转化,这里就不在赘述了。

路由模式的底层原理是有文章介绍的,想要了解的可以再中搜索

想要交流经验的可以加我QQ979778584

你可能感兴趣的:(HHRouter实践回顾)