动态路由

什么是移动端路由层:

路由层的概念在服务端是指url请求的分层解析,将一个请求分发到对应的应用处理程序。移动端的路由层指的是将诸如App内页面访问、H5与App访问的访问请求和App间的访问请求,进行分发处理的逻辑层。

移动端路由层需要解决的问题:

  1. 对外部提供远程访问的功能,实现跨应用调用响应,包括H5应用调用、其他App应用调用、系统访问调用等
  2. 原生页面、模块、组件等定义,统称为资源(Resource),在跨应用调用和路由层在不同端实现的业务表现需要一致的前提下,需要对资源进行定义,在路由提供内部请求分发的时候则可以提供不依赖对外进行资源定义的功能
  3. 外部调用如何使用统一标示(Uniform)进行表示资源
  4. 如何在移动端统一定义访问请求的过程,从而达成移动端与web端的统一性
  5. 如何更好的兼容iOS、Android的系统访问机制、App链接协议、web端路由机制与前端开发规范等
  6. 如何兼容各平台(Android、iOS)App页面导航机制
  7. 如何解决安全访问问题
  8. 移动端在客户端进行动态配置
动态路由试手

参考了项目中同事写的动态路由模块,发现写的不错,故模仿了一个写。项目中,我们使用动态路由器,实现模块间Controller的跳转传值,做到 解耦 作用

不用于以前的

1
#import xxxx

模块, 然后

1
2
3

xxx = [[xxxviewcontroller alloc]init];
[self.navigationcontroller push xxx...];

使用动态路由器,只需要在项目中plist注册好对应的模块和id,直接可以push过去,而且还能传参

模块结构

img

Navigation作为项目的根导航,包含了一个Router单例类,根据传入的 模块名字 或者 模块id ,做相应跳转

用到的ViewController皆继承 SYPageViewController SYPageViewController 遵守SYRouterJumpProtocol

协议里面是一些跳转方法,在SYPageViewController 的扩展类 SYRouterViewController+SYRouterProtocolAddition 中实现

实现原理,调用自身所在的根导航栏 SYRouterNavigator 中的Router类跳转方法实现跳转

总结

动态路由的试手,可能存在很多不足,动态路由器很有效解决了模块间的依赖问题,达到解耦作用

GitHub地址: https://github.com/swlfigo/SYDynamicRouter

Author

Sylar

Posted on

2019-04-28

Updated on

2021-11-14

Licensed under

Comments