HarmonyOS Navigation和Router这两种跳转方式可以共用吗?使用场景有什么不一样?

HarmonyOS Navigation和Router这两种跳转方式可以共用吗?使用场景有什么不一样?

HarmonyOS
2024-11-27 09:21:07
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​Navigation组件会引入router的开发思路,可以改成配置文件和pageSourceFile的方式路由到想要的页面中

调整后的文件格式如下:​

// 工程配置文件module.json5中配置 {"routerMap": "$profile:route_map"} 
// route_map.json 
{ 
  "routerMap": [ 
  { 
    "name": "pageOne", 
  "pageSourceFile": "src/main/ets/pages/PageOne.ets", 
  "buildFunction": "PageOneBuilder", 
  "data": { 
    "description": "this is pageOne" 
  } 
  }, 
  { 
    "name": "pageTwo", 
  "pageSourceFile": "src/main/ets/pages/PageTwo.ets", 
  "buildFunction": "PageTwoBuilder" 
  } 
  ] 
}

​相关信息请参考​https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navigation.md#%E7%A4%BA%E4%BE%8B2

当前HarmonyOS支持两套路由机制(Navigation和Router),Navigation作为后续长期演进及推荐的路由选择方案,其与Router比较的优势如下:

易用性层面: Navigation天然具备标题、内容、回退按钮的功能联动,开发者可以直接使用此能力。Router若要实现此能力,需要自行定义; Navigation的页面是由组件构成,易于实现共享元素的转场。

功能层面: Navigation天然支持一多,Router不支持; Navigation没有路由数量限制,Router限制32个; Navigation可以获取到路由栈NavPathStack,并对路由栈进行操作; Navigation可以嵌套在模态对话框中,也就是说可以模态框中定义路由,Router不支持; Navigation的组件全量由开发者自行控制,开发者可以自定义复杂的动效和属性的设置(背景、模糊等),Router的page对象不对外暴露,开发者无法对page进行处理。

性能层面 Navigation传递参数性能更优,Navigation通过引用传递,Router通过深拷贝完成; Navigation可以配合动态加载,实现组件动态加载,Router页面使用@Entry进行修饰,当前模块加载时会生成全量页面。

应用架构可以参考链接:​https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-app-architecture-overview-V5

分享
微博
QQ
微信
回复
2024-11-27 14:48:34
相关问题
鸿蒙安卓有什么不一样
6423浏览 • 3回复 待解决
HarmonyOS Navigationrouter使用场景
379浏览 • 2回复 待解决
Web组件获取高度不一样
2240浏览 • 1回复 待解决
js获取canvas对象两种方式啥不同?
7546浏览 • 1回复 待解决
HarmonyOS 两种模式布局如何兼容。
487浏览 • 1回复 待解决
HarmonyOS 跳转方式RouterNavigator
357浏览 • 1回复 待解决