写点什么

HarmonyOS 中的路由跳转该怎么设计?Router 和 Navigation 应该使用哪个呢?

  • 2026-02-24
    北京
  • 本文字数:606 字

    阅读完需:约 2 分钟

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。

问题描述:

在 HarmonyOS 中,如何实现模块间与模块内页面的跳转?Router 和 Navigation 的使用场景是什么?

解决方案:

HarmonyOS 提供了两种路由方式,Router 和 Navigation。Router 后续不再继续演进,推荐使用 Navigation 作为应用的路由方案。两种方案对比如下:

易用性层面:

1.Navigation 天然具备标题、内容、回退按钮的功能联动,开发者可以直接使用此能力。Router 若要实现此能力,需要自行定义;

2.Navigation 的页面是由组件构成,易于实现共享元素的转场。

功能层面:

1.Navigation 天然支持一多,Router 不支持;

2.Navigation 没有路由数量限制,Router 限制 32 个;

3.Navigation 可以获取到路由栈 NavPathStack,并对路由栈进行操作;

4.Navigation 可以嵌套在模态对话框中,也就是说可以模态框中定义路由,Router 不支持;

5.Navigation 的组件全量由开发者自行控制,开发者可以自定义复杂的动效和属性的设置(背景、模糊等),Router 的 page 对象不对外暴露,开发者无法对 page 进行处理。

性能层面:

1.Navigation 传递参数性能更优,Navigation 通过引用传递,Router 通过深拷贝完成;

2.Navigation 可以配合动态加载,实现组件动态加载,Router 页面使用 @Entry 进行修饰,当前模块加载时会生成全量页面。

详细解决方案以及相关讨论,请点击原帖查看:

#HarmonyOS最强问答官# HarmonyOS中的路由跳转有哪些方式?-华为开发者问答 | 华为开发者联盟 (huawei.com)