为什么Navigation系统路由表不依赖目标模块却能实现跳转? Navigation跨模块跳转原理分析

Navigation组件跳转到跨包路径时使用系统路由表只需目标路径的名称,不需要在依赖里声明目标模块。

但是使用自定义路由表进行动态import却需要声明目标依赖。系统路由表是如何做的不需要依赖却能跳转的?

以下从多个方面深入剖析鸿蒙中 Navigation 利用系统路由表实现动态路由的更深层次原理,以及其不支持预览器、跨平台及模拟器的原因:

系统路由表实现动态路由的原理

1. 编译期的路由信息收集与整合
  • 模块独立配置:每个业务模块(HSP/HAR)都有独立的 route_map.json 文件,该文件中记录了模块内各个页面的路由配置信息,比如页面的路径名称、对应的组件类名、所需的参数等。在编译应用时,构建工具会对各个模块的 route_map.json 文件进行收集。
  • 全局路由表生成:构建工具将收集到的所有 route_map.json 文件中的路由信息整合到一个全局的系统路由表中。这个过程类似于将各个业务模块的路由信息汇总到一个统一的“地图”里,使得系统能够对整个应用的路由情况有全局的了解。
2. 运行时的路由解析与模块加载
  • 路由请求接收:当应用中调用 NavPathStack 提供的路由方法并传入目标页面的配置名称时,系统会接收到这个路由请求。
  • 路由信息查找:系统会在全局的系统路由表中查找与传入的页面配置名称匹配的路由信息。由于系统路由表已经整
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值