HarmonyOS鸿蒙Next中路由跳转选择

HarmonyOS鸿蒙Next中路由跳转选择 路由跳转有router和Navigation,为什么官方不推荐用router啊,我初学者用起来还挺方便的

3 回复
  1. 实现机制

    • Navigation:作为页面的根容器,主要包含主页和内容页。它通过NavPathStack实现页面路由,支持pushPath和pushPathByName两种方法进行页面跳转。
    • Router:通过不同的URL地址实现页面路由,支持pushUrl和replaceUrl两种跳转模式,并且可以传递参数。页面栈的最大容量为32个页面,超过这个限制可以调用clear()方法释放内存空间。
  2. 跳转模式

    • Navigation:提供pushPath和pushPathByName两种方法,支持pop、move、clear等多种操作,能够灵活控制页面栈的状态。
    • Router:提供pushUrl和replaceUrl两种跳转模式,决定了目标页面是否会替换当前页面。同时提供Standard和Single两种实例模式,决定目标URL是否对应多个实例。
  3. 数据传递

    • Navigation:可以通过params方法向目标页面传递参数,支持对象的传递。
    • Router:在调用跳转方法时添加params属性传递参数,目标页可以通过getParams()方法获取传递过来的参数。
  4. 导航控制

    • Navigation:支持更丰富的导航控制,如动态加载、跨包引用等。
    • Router:主要提供基本的页面跳转和返回功能,可以通过router.back()等方式返回上一页。
  5. 适用场景

    • Navigation:适用于需要统一页面跳转管理、复杂导航控制的场景。
    • Router:适用于简单的页面间跳转和数据传递的场景。
  6. 性能考量

    • Navigation:由于其丰富的导航控制,可能会占用更多的系统资源。
    • Router:提供基本的跳转功能,可能在资源占用上更为经济。
  7. 易用性

    • Navigation:学习曲线可能较陡,需要理解多种导航控制和路由转场的概念。
    • Router:相对简单直观,特别是对于熟悉Web开发中URL路由的开发者来说。
  8. 平台版本

    • Navigation:在不同API版本中有不同的实现方式,如NavPathStack在API Version 9上需要配合NavRouter使用,而在API Version 10中推荐使用NavPathStack配合NavDestination。
    • Router:提供的是较为通用的URL路由功能,在不同平台版本中变化不大。

更多关于HarmonyOS鸿蒙Next中路由跳转选择的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,路由跳转主要通过router模块实现。使用router.pushUrl()进行页面跳转,router.back()返回上一页,router.replaceUrl()替换当前页。支持命名路由,需在main_pages.json配置路径。页面间传参使用URL参数或router.getParams()获取。跨设备跳转需使用want对象指定目标设备ID。路由跳转模式分standard(默认)和single两种,后者会复用已存在的页面实例。

在HarmonyOS Next中,官方推荐使用Navigation而非router进行页面跳转,主要原因在于Navigation是专为HarmonyOS设计的现代化导航框架,具有以下优势:

  • 声明式API:Navigation采用更符合ArkUI开发范式的声明式编程方式,与HarmonyOS的UI开发理念更契合

  • 类型安全:Navigation提供了类型安全的参数传递机制,相比router的字符串传参更可靠

  • 导航栈管理:Navigation内置了完整的页面栈管理功能,支持前进、后退等导航操作

  • 动效支持:Navigation原生支持页面转场动画,开发更便捷

  • 生命周期管理:Navigation能更好地与HarmonyOS的页面生命周期协同工作

虽然router使用起来简单,但它实际上是兼容旧系统的过渡方案,在复杂场景下容易出现问题。随着HarmonyOS Next的发展,Navigation将成为主要的导航方式,建议新项目直接采用Navigation以获得更好的开发体验和长期维护性。

回到顶部