一、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,也就是将回调参数处理的逻辑交给自定义类去处理
网友评论