iOS 模块化之JLRoute路由示例

2020-01-21 05:09:46王振洲

JLRoutes是一个调用极少代码 , 可以很方便的处理不同URL schemes以及解析它们的参数,并通过回调block来处理URL对应的操作 , 可以用于处理复杂跳转逻辑的三方库.

1.在日常开发中 , push , present 出现在整个程序的各个地方 , 如果你想快速理清一个项目的整体逻辑 , 非常麻烦 . 大多数情况 , 你得找到代码目录 ,根据层级结构分出关系 , 然后找到对应的push位置 , 寻找下一级页面 , 如果本身项目的目录就非常乱 , 那么如果要了解一个项目的整体跳转逻辑 , 非常的难.

即便可以将 UIViewController-Swizzled 库集成到项目中 ,然后一页一页点击查询 , 但也是比较痛苦的.

如果 , 是把整个项目的跳转逻辑都给抽取出来 , 单独放在一个类 , 模块化管理 , 那么思路就会清晰很多 , 甚至可以用XMind根据代码画出整个项目的树状图

2.如果所处公司存在多个app , app之间互相推荐 , 互相跳转是再正常不过的需求,就类似于QQ , 微信三方分享跳转等 .如果用Appdelegate原生方法进行拦截 , 所做的事至少得是判断Scheme是否匹配 , 想办法进入需要跳到的界面 , 如果要涉及传参 , 就更加麻烦.

3. 如果用户是从PC端识别二维码,或者通过链接想要进入app指定页面

基于 JLRoute 实现的模块化示例,包括链接跳转原生页面、WebView页面和ReactNative页面

模块化已经成为调剂庞大项目结构的一剂良药,对项目的开发、维护和后续的扩展的好处已经不言而喻。

要求

    iOS 8.0+ Xcode 7.0+

安装方法

安装

在 iOS, 你需要在 Podfile 中添加.


source 'https://www.easck.com/node_modules/react-native', :subspecs => [
  'Core',
  'RCTText',
  'RCTNetwork',
  'RCTWebSocket', # 这个模块是用于调试功能的
  # 在这里继续添加你所需要的模块
]
# 如果你的RN版本 >= 0.42.0,请加入下面这行
pod "Yoga", :path => "./node_modules/react-native/ReactCommon/yoga"

启动 ReactNative 环境

1.修改项目ModuleARNPageViewController.m IP 跳转地址

iOS,JLRoute路由,JLRoute

2.进入项目所在目录,运行


npm start

JLRoutes的工作流程和原理

单一的Scheme注册过程:

iOS,JLRoute路由,JLRoute

1.调用注册方法(用户注册routePattern,默认优先级0)

 

复制代码
- (void)addRoute:(NSString *)routePattern handler:(BOOL (^__nullable)(NSDictionary<NSString *, id> *parameters))handlerBlock;