0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【开源三方库】Arouter:一款轻量、高效的页面路由工具

OpenAtom OpenHarmony 来源:未知 2023-11-24 21:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

点击蓝字 ╳ 关注我们

开源项目 OpenHarmony是每个人的 OpenHarmony wKgaomVgowKABhtvAABG3jYJR5o827.jpg

孙澳

OpenHarmony知识体系组

简介

Arouter是一款适用于OpenAtom OpenHarmony(以下简称“OpenHarmony”)的轻量高效的页面路由工具,相比原生的路由方案,Arouter更有优势。传统的路由方案使用显示Intent和隐式Intent进行跳转,会存在一些问题。使用显式Intent耦合度过高,而使用隐式Intent集中式管理Path会导致协作困难。Arouter采用自定义的路由方案,通过解析标准URL进行跳转,避免了直接依赖的问题。使用分布式管理页面配置,解决了集中式管理Path的问题,整个路由跳转过程更加透明,具有更好的扩展性。Arouter相比原生路由方案,具有更低的耦合度、更好的协作性和控制拦截能力,同时采用分布式管理页面配置,提供了更好的扩展性,目前支持SDK:OpenHarmony API Version 10版本。

效果图

wKgaomVgowOAMnJnAFUxibk44kI804.gif  

使用说明

Arouter支持以下功能:

●支持页面间路由跳转;

●支持带参数跳转及回调;

●支持配置跳转拦截器;

●支持预处理跳转与否;

路由跳转

1.不传参跳转通过Arouter.getInstance()创建路由对象,使用链式调用方法 build('')配置跳转的页面,navigation() 方法进行页面跳转。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳转的地址    
 .navigation()

2.传参跳转在不传参跳转的基础上,跳转之前通过withParams()进行参数配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳转的地址    
 .withParams({index:"--"})    
.navigation()
3.路由回调路由回调需要配合NavigationCallback接口进行,在路由前的页面实现NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {    
 onInterrupt(postcard){},    
 onArrival(postcard){},    
 onActivityResult(data){}
}
然后将callback传入 .navigationWithCallback()中进行跳转
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--")//需要跳转的地址    
.navigationWithCallback(callback)
在目标页面的onPageShow()生命周期中调用getPostcard()方法获取到指定的postcard
import router from '@ohos.router';
if (postcard == null) { 
 postcard =  Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);   
}
使用 postcard.getNavigationCallback() 方法调用对应的回调方法,即可回调源页面实现的方法
postcard.getNavigationCallback().onActivityResult(params)

路由拦截

1.配置拦截器在拦截器中的process()方法中实现页面的拦截,通过interceptorCallback.onInterrupt()中断跳转,interceptorCallback.onContinue()继续跳转。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
    process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
        // 选择拦截的页面,若跳转时有该路径则进行拦截提示,若没有则直接跳转
        if (Postcard.getUri() == 'pages/transit') {
            // 选择弹框
            AlertDialog.show(
                {
                    message: '被拦截了,点击继续跳转',
                    primaryButton: {
                        value: '取消',
                        action: () => {
                            // 中断跳转
                         interceptorCallback.onInterrupt(postcard)
                        }
                    },
                    secondaryButton: {
                        value: '继续',
                        action: () => {
                            // 继续跳转
                        interceptorCallback.onContinue(postcard);
                        }
                    },
                }
            )
        } else {
            // 继续跳转
            interceptorCallback.onContinue(postcard);
        }
    }
}
2.注册拦截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除拦截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置绿色通道在跳转前使用.setGreenChannel()方法跳过拦截(true:跳过拦截)。
Arouter.getInstance()
    .build("--/--")//需要跳转的地址
    .setGreenChannel(true)
.navigation()
5.配置预处理跳转与否预处理:实现 PretreatmentService 接口中 onPretreatment 方法,并返回一个Boolean值(true:继续跳转,false:不跳转)。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
  onPretreatment(postcardboolean{
    return true
  }
}

在跳转前调用.setPretreatmentService() 方法,将 pretreatmentService传入 setPretreatmentService()方法中完成预处理功能。

Arouter.getInstance()
    .build(this.router)
    .setPretreatmentService(pretreatmentService)
.navigationWithCallback(callback)

接口说明

ArouterwKgaomVgowOAaJS8AABZ7zRyQvI888.png  回调接口wKgaomVgowOAFdW9AAA0dzkOMPk424.png  

下载安装

ohpminstall@ohos/arouteronactivityresult

源码链接

https://gitee.com/openharmony-tpc/arouter-api-onActivityResult


原文标题:【开源三方库】Arouter:一款轻量、高效的页面路由工具

文章出处:【微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    60

    文章

    3058

    浏览量

    46265
  • OpenHarmony
    +关注

    关注

    33

    文章

    3983

    浏览量

    21458

原文标题:【开源三方库】Arouter:一款轻量、高效的页面路由工具

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么MES企业要跟第三方机构合作设备数据采集?

    综上考虑,多数MES企业都不直接承接设备数据采集业务,而是选择和第三方机构合作。毕竟第三方机构长期耕耘这领域,拥有成熟的产品体系、完善的技术路线以及专业的现场施工团队,能够快速应对各类现场难题,将
    的头像 发表于 03-19 15:03 937次阅读
    为什么MES企业要跟第<b class='flag-5'>三方</b>机构合作设备数据采集?

    苹果17可以无线充电吗?第三方配件怎么选?

    iPhone 17无线充电提升车载体验,支持Qi2.2,磁吸强、散热好,第三方配件需认准MFM认证。
    的头像 发表于 03-19 08:17 1100次阅读
    苹果17可以无线充电吗?第<b class='flag-5'>三方</b>配件怎么选?

    CW32W031调制频率的话有第三方软件工具么?

    请问,CW32W031调制频率的话,有第三方软件工具么?仿真软件也行
    发表于 01-19 06:54

    钉钉正式开源HarmonyOS图片编辑组件

    近日,由钉钉团队自主研发的“HarmonyOS图片编辑组件”正式上线OpenHarmony三方中心仓并开源。作为一款填补鸿蒙社区图像处理领域空白的重量级组件,该方案基于Harmony
    的头像 发表于 01-05 09:58 760次阅读

    SEGGER Ozone调试器支持第三方调试工具

    SEGGER强大的Ozone调试器和性能分析器,长期以来直深受J-Link和J-Trace用户的信任,现在可以支持第三方调试工具了。
    的头像 发表于 09-29 11:45 1556次阅读

    知乎开源“智能预渲染框架” 几行代码实现鸿蒙应用页面“秒开”

    近日,知乎在Gitee平台开源了其自研的鸿蒙“智能预渲染框架”,并将该框架的Har包上架到OpenHarmony三方中心仓。该框架在鸿蒙平台首创“智能预渲染”技术,旨在破解应用复杂页面
    的头像 发表于 08-29 14:32 770次阅读
    知乎<b class='flag-5'>开源</b>“智能预渲染框架” 几行代码实现鸿蒙应用<b class='flag-5'>页面</b>“秒开”

    货拉拉开源三方,为鸿蒙应用高效开发贡献力量

    、可扩展的通用工具,持续提升鸿蒙应用的创新体验与开发效率。 在这生态共建的浪潮中,货拉拉积极贡献了其在鸿蒙应用开发过程中的宝贵经验与技术积累,开源了两款实用三方
    的头像 发表于 08-26 14:02 713次阅读
    货拉拉<b class='flag-5'>开源</b>两<b class='flag-5'>款</b><b class='flag-5'>三方</b><b class='flag-5'>库</b>,为鸿蒙应用<b class='flag-5'>高效</b>开发贡献力量

    基于开源鸿蒙的语音识别及语音合成应用开发样例

    本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,利用sherpa_onnx开源三方进行ASR语音识别与TTS语音合成应用开发的流程。
    的头像 发表于 08-25 14:26 4578次阅读
    基于<b class='flag-5'>开源</b>鸿蒙的语音识别及语音合成应用开发样例

    鸿蒙非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件

    近日,企查查将其自研的鸿蒙弹窗组件“QuickDialog”开源,并上线至 OpenHarmony 三方中心仓。这是鸿蒙生态首个支持“弹窗堆栈暂存能力”的非侵入式弹窗解决方案,凭借
    的头像 发表于 07-31 10:40 919次阅读
    鸿蒙非侵入式弹窗新解法,企查查正式<b class='flag-5'>开源</b>“QuickDialog”弹窗组件<b class='flag-5'>库</b>

    飞书富文本组件RichTextVista开源

    近日,飞书正式将其自研的富文本组件 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为
    的头像 发表于 07-16 16:47 1233次阅读

    如何集成第三方支付API到电商网站

    ​ 在电商网站中,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文将逐步指导您完成整个流程,从选择支付提供商到上线后的监控。文章结构清晰,包含代码示例和实用建议,帮助您高效实现支付
    的头像 发表于 07-16 10:35 804次阅读
    如何集成第<b class='flag-5'>三方</b>支付API到电商网站

    天合跟踪获得DNV第三方风洞测试审查报告

    三方审核。这不仅是三方合作的里程碑,更是中国光伏跟踪支架技术迈向国际高标准的重要步。DNV对此研究成果的专业性以及可靠性进行了全面审查。
    的头像 发表于 07-08 17:35 1179次阅读

    HarmonyOS入门指南

    OpenHarmony三方中心仓 坚果派 童长老仓库中心 鸿蒙宝典 本快速学习鸿蒙的电子书 promises-book JavaScript Promise迷你书。 harmony-utils
    的头像 发表于 06-27 00:11 968次阅读

    使用 Claroty SRA 优化第三方 OT 远程访问

    三方,如原始设备制造商 (OEM) 技术员和维护承包商,是确保 OT 环境可用性、完整性和安全性的关键。负责服务 OT 资产的第三方经常远程工作。这意味着,他们会通过无数广泛使用的解决方案远程连接
    的头像 发表于 06-17 16:11 934次阅读
    使用 Claroty SRA 优化第<b class='flag-5'>三方</b> OT 远程访问

    三方工业互联网平台有哪些

    三方工业互联网平台有哪些
    的头像 发表于 06-14 15:48 1591次阅读