“任意门”:一行配置实现页面跳转重定向。
背景 & 痛点 & 价值
动态路由组件,处理的是 App 中最最常见的一种行为的问题,那就是:跳转。
随着 App 技术栈的扩展,从原本最最简单的原生到原生的跳转,扩展到目前同一个 App 中包含原生页面、H5 页面、Weex 页面、Flutter 页面之间的跳转。
随之而来的问题就是:随着 App 的版本迭代,很多原本原生实现的页面,需要通过新的 H5 或者 Weex 页面进行升级/降级。而这些原本都是硬编码的跳转逻辑,可能需要随着版本不停改动。总结下来,现有的,各个技术栈隔离的页面跳转逻辑面临的直接问题有:
- 跳转逻辑跟着版本走,无法统一进行改动
- 跨技术栈跳转的实现成本比较高,必须在桥接模块中进行特殊适配
- 在一些 H5 需要使用专门 WebView 页面打开的场景下,很难去适配,也必须通过各个 Web 跳转的拦截做特殊处理
为了解决以上硬编码以及灵活性差的问题,我们决定梳理现有的各技术栈跳转逻辑,将这些跳转整合,能够满足动态性、可配置的需求。
得益于项目中原有的路由跳转组件,各种页面之间的页面都可以通过 URL 的方式进行路由,于是我们基于 URL 跳转,开发了一套动态路由组件,它完成的工作有 :
- 承担 App 内所有跳转逻辑
- 通过配置中心组件,支持获取/配置路由替换规则
- 匹配所有的路由跳转规则,命中规则的,替换成新的目标路由地址
- 将实际跳转目标地址传递给路由组件执行实际的跳转行为
原文链接:【https://www.infoq.cn/article/LVQUWPfMN2XM86r5EEYP】。未经作者许可,禁止转载。