美文网首页
iOS 组件化-JLRoutes

iOS 组件化-JLRoutes

作者: 搬砖的crystal | 来源:发表于2021-04-02 13:48 被阅读0次

一、JLRoutes原理

运行机制是:保存一个全局的map(routeControllersMap),map中的key是url(scheme),value是对应存放的block数组,url和block都会一直保存在内存中,当打开一个url时,JLRoutes就会遍历这个全局map,通过url来执行对应的block。

1.原理详解
1.1原理逻辑

(1)routeControllersMap是全局的单例字典,字典key值对应一个标识,源码中的scheme,value值为这个标识对应的JLRoutes对象。
(2)JLRoutes对象有两个常用的属性,一个是scheme也就是JLRoutes的对象标识,也就是value值记录了自己的key。另外一个是routes数组,数组中存放了JLRRouteDefinition对象。
(3)JLRRouteDefinition对象为最终的具体模型,注册的跳转逻辑的所有信息,都存放在这个模型中,包括要实施操作的block。

1.2类
  • JLRoutes:JLRoutes框架的入口,负责注册url,管理路由以及分配路由
  • JLRRouteDefinition:用来封装注册 url 的路由信息,包括 url scheme,route pattern,and priority,并且可以根据 request 提供相应的 response。可以通过继承该类来实现自定义的匹配方式
  • JLRRouteRequest:用来封装一个 url 的路由请求信息,包括 url、解析后的 path components 和 query parameters
  • JLRRouteResponse:根据 url 匹配路由信息时的 response,包含 isMatch、parameters 等信息。如果 JLRRouteDefinition 匹配 url 成功时,就会设置属性 isMatch 为 YES,同时将解析 url 后的参数和 默认参数、附加参数组合返回
  • JLRParsingUtilities:解析 URL 参数的工具类
  • JLRRouteHandler:自定义路由 handler,也就是将回调参数处理的逻辑交给自定义类去处理
1.3注册路由
1.4查找路由
首先根据外部传进来的URL初始化一个JLRRouteRequest,然后用这个JLRRouteRequest在当前的路由数组里面依次request,每个规则都会生成一个response,但是只有符合条件的response才会match,最后取出匹配的JLRRouteResponse拿出其字典parameters里面对应的参数。

相关文章

网友评论

      本文标题:iOS 组件化-JLRoutes

      本文链接:https://www.haomeiwen.com/subject/csbzcltx.html