论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
移动端开发
›
鸿蒙
›
鸿蒙NEXT版实战开辟:UI框架-Navigation与Router对比和 ...
鸿蒙NEXT版实战开辟:UI框架-Navigation与Router对比和怎样举行选择 ...
诗林
金牌会员
|
2025-1-11 20:25:33
|
显示全部楼层
|
阅读模式
楼主
主题
717
|
帖子
717
|
积分
2151
往期鸿蒙全套实战文章必看:(附带鸿蒙全栈学习资料)
鸿蒙开辟核心知识点,看这篇文章就够了
最新版!鸿蒙HarmonyOS Next应用开辟实战学习路线
鸿蒙HarmonyOS NEXT开辟技能最全学习路线指南
鸿蒙应用开辟实战项目,看这一篇文章就够了(部分项目附源码)
Navigation与Router对比和怎样举行选择
当前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举行修饰,当前模块加载时会生成全量页面。
Navigation & Router结构对比
Navigation中的每个页面,承载在一个page里,通过NavDestination容器实现基于组件的页面跳转。
Router的每一个页面配置在一个单独的page中,通过@Entry举行标识。
Navigation & Router本事对比
业务场景
Navigation本事
Router本事
跳转指定页面
pushPath & pushDestination
pushUrl & pushNameRouter
跳转HSP中页面
支持,需要先import页面
支持
跳转HAR中页面
支持,需要先import页面
支持
跳转传参
支持
支持
获取指定页面参数
支持
不支持
跳转效果回调
支持
支持
跳转单例页面
可通过判断栈内有没有此页面,调用moveToTop实现
支持
页面返回
pop
back
页面返回传参
支持
支持
返回指定路由
popToName&popToIndex
不支持
页面返回弹窗
通过路由拦截实现
showAlertBeforeBackPage
路由更换
replacePath & replacePathByName
replaceUrl & replaceNameRouter
路由栈清理
clear
clear
清理指定路由
removeByIndexes & removeByName
不支持
转场动画
支持
支持
自界说转场动画
支持
支持
屏蔽转场动画
pushDestination(info: NavPathInfo, animated?: boolean) & pathStack.disableAnimation(true)
支持 duration属性设置为0
共享元素动画
支持
不支持
页面生命周期监听
UIObserver.on('navDestinationUpdate')
UIObserver.on('routerPageUpdate')
获取页面栈对象
支持
不支持
路由拦截
setInterception
不支持
路由栈信息查询
getAllPathName & getParamByIndex & getParamByName&size
getState() & getLength()
路由栈操作
moveToTop & moveIndexToTop
不支持
沉醉式页面
支持
不支持,需通过window配置
设置页面属性(背景,模糊等)
支持,backgroundBlurStyle
不支持
设置页面标题栏(title)和工具栏(toolbar)
支持
不支持
模态嵌套路由
支持
不支持
利用选择
如果项目只有一个主项目,没有拆分模块,直接用Navigation即可。
如果项目包含模块,比如项目有主项目,A、B模块,主项目的H界面要跳转到A模块的I界面,或者A模块的I界面要跳转到B模块的J界面,这个时候就要用router。但是主项目里的M界面跳转主项目里的N界面,或者A模块的O界面跳转A模块的P界面,这种属于同模块内的差异界面,可以用Navgation。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
诗林
金牌会员
这个人很懒什么都没写!
楼主热帖
【Linux】Ubuntu20.04解决网卡、显卡驱 ...
Adobe2024全家桶win及Mac系统安装包下 ...
Java软件架构师-25个关注点
24年首批!上海通管通报违规app涉及欧莱 ...
【Linux】网络设置(静态/动态/手动/nm ...
服务网格主动故障检测及流量切换方案 ...
【职场大揭秘】公司可以看到员工电脑在 ...
小步伐中Java背景调用getAccessToken接 ...
Windows安装mamba全流程(全网最稳定最 ...
检测文本是否由AI生成,GPT、文心一言 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
网络安全
快速回复
返回顶部
返回列表