Navigation组件跳转到跨包路径时使用系统路由表只需目标路径的名称,不需要在依赖里声明目标模块。
但是使用自定义路由表进行动态import却需要声明目标依赖。系统路由表是如何做的不需要依赖却能跳转的?
以下从多个方面深入剖析鸿蒙中 Navigation
利用系统路由表实现动态路由的更深层次原理,以及其不支持预览器、跨平台及模拟器的原因:
系统路由表实现动态路由的原理
1. 编译期的路由信息收集与整合
- 模块独立配置:每个业务模块(HSP/HAR)都有独立的
route_map.json
文件,该文件中记录了模块内各个页面的路由配置信息,比如页面的路径名称、对应的组件类名、所需的参数等。在编译应用时,构建工具会对各个模块的route_map.json
文件进行收集。 - 全局路由表生成:构建工具将收集到的所有
route_map.json
文件中的路由信息整合到一个全局的系统路由表中。这个过程类似于将各个业务模块的路由信息汇总到一个统一的“地图”里,使得系统能够对整个应用的路由情况有全局的了解。
2. 运行时的路由解析与模块加载
- 路由请求接收:当应用中调用
NavPathStack
提供的路由方法并传入目标页面的配置名称时,系统会接收到这个路由请求。 - 路由信息查找:系统会在全局的系统路由表中查找与传入的页面配置名称匹配的路由信息。由于系统路由表已经整