HarmonyOS Navigation和router怎么用

1、如果都用navigation的话,是不是不需要那么多page了?

2、如果一个app只有一个page的话,会不会有什么问题呢?

3、navigation是不是不支持跳转page?

HarmonyOS
8h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

1.当前版本:

(1)模块间页面跳转选型:对于Hap与Hsp之间的跳转,使用router进行路由跳转,对于开发者来说更为简单。即直接在对应的page.json文件声明,随后按照路由格式跳转,通过每个页面的url实现模块间解耦。

Hap与Har之间的跳转,基于上述Router方案,可以使用router+命名路由,但是该方案需要开发者动态import对应的页面,会增加模块间的耦合性。对于路由跳转较为复杂的应用,需要重视该问题,Navigation有同样的动态import能力与问题,不过动态import可以优化用户的首次加载速度体验。

(2)模块内页面跳转选型:Navigation,本质是组件级路由,组件之间的依赖关系较复杂,更适合模块内的页面跳转。另外Navigation能够提供更好的转场效果,在当前版本,模块内跳转建议使用Navigation。

2.演进计划:对于router在模块间的能力,后续Navigation将会提供更加友好的模块间跳转功能。作为API的局限性,Router配合@Entry的路由方式很难实现以下场景的功能,需要使用Navigation实现。

(1)页面间传递不可序列化的页面参数router由C++存储数据,类型受限;而Navigation可以使用统一的前端路由表配置对象,由开发者基于状态管理能力通过驱动数据驱动页面切换,参数配置完全由开发者自己定义

(2)复杂动效互动场景的实现,如页面之间元素进行共享互动页面与页面之间相互独立,无法产生关联,尤其在复杂动效互动场景下(页面之间元素进行共享互动)很难实现

(3)模态互动场景在模态交互场景,比如半模态弹窗等,需要在模态界面进行页面切换,而模态界面本身属于页面内的控件,无法通过页面路由实现模态界面中的切换效果,需要提供组件级的路由能力,嵌套在模态弹窗内。

(4)灵活的让开发者灵活管控页面的加载和销毁@Entry方式通过工具链生成自执行代码,一旦当前模块加载就会自动执行代码生成页面,无法让开发者管控加载和销毁逻辑

(5)一多分栏能力自动适配窗口显示大小,在窗口较大的场景下自动切换分栏展示效果

考虑上述Navigation的优势,以及为保证体验一致性,推荐使用Navigation。

分享
微博
QQ
微信
回复
6h前
相关问题
HarmonyOS Navigationrouter的使用场景
391浏览 • 2回复 待解决
关于routerNavigation要选择哪个使用
692浏览 • 2回复 待解决
navigationrouter的区别是什么?
1010浏览 • 1回复 待解决
HarmonyOS Navigation显示dialog问题
466浏览 • 1回复 待解决
HarmonyOS 跳转方式RouterNavigator
389浏览 • 1回复 待解决
HarmonyOS @ObjectLink到底怎么
0浏览 • 0回复 待解决
HarmonyOS NavigationTab组件问题
903浏览 • 1回复 待解决
Class Routernamespace router有什么区别
1617浏览 • 1回复 待解决