0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具

OpenAtom OpenHarmony ? 來(lái)源:未知 ? 2023-11-24 21:15 ? 次閱讀

點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們

開(kāi)源項(xiàng)目 OpenHarmony是每個(gè)人的 OpenHarmony wKgaomVgowKABhtvAABG3jYJR5o827.jpg

孫澳

OpenHarmony知識(shí)體系組

簡(jiǎn)介

Arouter是一款適用于OpenAtom OpenHarmony(以下簡(jiǎn)稱(chēng)“OpenHarmony”)的輕量高效的頁(yè)面路由工具,相比原生的路由方案,Arouter更有優(yōu)勢(shì)。傳統(tǒng)的路由方案使用顯示Intent和隱式Intent進(jìn)行跳轉(zhuǎn),會(huì)存在一些問(wèn)題。使用顯式Intent耦合度過(guò)高,而使用隱式Intent集中式管理Path會(huì)導(dǎo)致協(xié)作困難。Arouter采用自定義的路由方案,通過(guò)解析標(biāo)準(zhǔn)URL進(jìn)行跳轉(zhuǎn),避免了直接依賴(lài)的問(wèn)題。使用分布式管理頁(yè)面配置,解決了集中式管理Path的問(wèn)題,整個(gè)路由跳轉(zhuǎn)過(guò)程更加透明,具有更好的擴(kuò)展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協(xié)作性和控制攔截能力,同時(shí)采用分布式管理頁(yè)面配置,提供了更好的擴(kuò)展性,目前支持SDK:OpenHarmony API Version 10版本。

效果圖

wKgaomVgowOAMnJnAFUxibk44kI804.gif ?

使用說(shuō)明

Arouter支持以下功能:

●支持頁(yè)面間路由跳轉(zhuǎn);

●支持帶參數(shù)跳轉(zhuǎn)及回調(diào);

●支持配置跳轉(zhuǎn)攔截器;

●支持預(yù)處理跳轉(zhuǎn)與否;

路由跳轉(zhuǎn)

1.不傳參跳轉(zhuǎn)通過(guò)Arouter.getInstance()創(chuàng)建路由對(duì)象,使用鏈?zhǔn)秸{(diào)用方法 build('')配置跳轉(zhuǎn)的頁(yè)面,navigation() 方法進(jìn)行頁(yè)面跳轉(zhuǎn)。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳轉(zhuǎn)的地址    
 .navigation()

2.傳參跳轉(zhuǎn)在不傳參跳轉(zhuǎn)的基礎(chǔ)上,跳轉(zhuǎn)之前通過(guò)withParams()進(jìn)行參數(shù)配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳轉(zhuǎn)的地址    
 .withParams({index:"--"})    
.navigation()
3.路由回調(diào)路由回調(diào)需要配合NavigationCallback接口進(jìn)行,在路由前的頁(yè)面實(shí)現(xiàn)NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {    
 onInterrupt(postcard){},    
 onArrival(postcard){},    
 onActivityResult(data){}
}
然后將callback傳入 .navigationWithCallback()中進(jìn)行跳轉(zhuǎn)
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--")//需要跳轉(zhuǎn)的地址    
.navigationWithCallback(callback)
在目標(biāo)頁(yè)面的onPageShow()生命周期中調(diào)用getPostcard()方法獲取到指定的postcard
import router from '@ohos.router';
if (postcard == null) { 
 postcard =  Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);   
}
使用 postcard.getNavigationCallback() 方法調(diào)用對(duì)應(yīng)的回調(diào)方法,即可回調(diào)源頁(yè)面實(shí)現(xiàn)的方法
postcard.getNavigationCallback().onActivityResult(params)

路由攔截

1.配置攔截器在攔截器中的process()方法中實(shí)現(xiàn)頁(yè)面的攔截,通過(guò)interceptorCallback.onInterrupt()中斷跳轉(zhuǎn),interceptorCallback.onContinue()繼續(xù)跳轉(zhuǎn)。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
    process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
        // 選擇攔截的頁(yè)面,若跳轉(zhuǎn)時(shí)有該路徑則進(jìn)行攔截提示,若沒(méi)有則直接跳轉(zhuǎn)
        if (Postcard.getUri() == 'pages/transit') {
            // 選擇彈框
            AlertDialog.show(
                {
                    message: '被攔截了,點(diǎn)擊繼續(xù)跳轉(zhuǎn)',
                    primaryButton: {
                        value: '取消',
                        action: () => {
                            // 中斷跳轉(zhuǎn)
                         interceptorCallback.onInterrupt(postcard)
                        }
                    },
                    secondaryButton: {
                        value: '繼續(xù)',
                        action: () => {
                            // 繼續(xù)跳轉(zhuǎn)
                        interceptorCallback.onContinue(postcard);
                        }
                    },
                }
            )
        } else {
            // 繼續(xù)跳轉(zhuǎn)
            interceptorCallback.onContinue(postcard);
        }
    }
}
2.注冊(cè)攔截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除攔截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置綠色通道在跳轉(zhuǎn)前使用.setGreenChannel()方法跳過(guò)攔截(true:跳過(guò)攔截)。
Arouter.getInstance()
    .build("--/--")//需要跳轉(zhuǎn)的地址
    .setGreenChannel(true)
.navigation()
5.配置預(yù)處理跳轉(zhuǎn)與否預(yù)處理:實(shí)現(xiàn) PretreatmentService 接口中 onPretreatment 方法,并返回一個(gè)Boolean值(true:繼續(xù)跳轉(zhuǎn),false:不跳轉(zhuǎn))。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
  onPretreatment(postcardboolean{
    return true
  }
}

在跳轉(zhuǎn)前調(diào)用.setPretreatmentService() 方法,將 pretreatmentService傳入 setPretreatmentService()方法中完成預(yù)處理功能。

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

接口說(shuō)明

ArouterwKgaomVgowOAaJS8AABZ7zRyQvI888.png ?回調(diào)接口wKgaomVgowOAFdW9AAA0dzkOMPk424.png ?

下載安裝

ohpminstall@ohos/arouteronactivityresult

源碼鏈接

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


原文標(biāo)題:【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具

文章出處:【微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2291

    瀏覽量

    42632
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3611

    瀏覽量

    15962

原文標(biāo)題:【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺(jué)智能所有支持Android11系統(tǒng)的開(kāi)發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺(jué)智能的Purple Pi OH鴻蒙開(kāi)源主板,搭載了瑞芯微RK3566芯片,類(lèi)樹(shù)莓派設(shè)計(jì),是Laval官方社區(qū)主薦的一款鴻蒙開(kāi)發(fā)
    的頭像 發(fā)表于 09-24 09:43 ?237次閱讀
    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第<b class='flag-5'>三方</b>輸入法為默認(rèn)輸入法

    開(kāi)源鴻蒙】使用QEMU運(yùn)行OpenHarmony系統(tǒng)

    本文將會(huì)介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運(yùn)行OpenHarmony系統(tǒng)。通過(guò)本文,你將會(huì)對(duì)QEMU和OpenHarmony系統(tǒng)又
    的頭像 發(fā)表于 09-14 08:51 ?320次閱讀
    【<b class='flag-5'>開(kāi)源</b>鴻蒙】使用QEMU運(yùn)行OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b>系統(tǒng)

    ?介紹一款Java開(kāi)發(fā)的開(kāi)源MES系統(tǒng)

    ?介紹一款Java開(kāi)發(fā)的開(kāi)源MES系統(tǒng),萬(wàn)界星空科技開(kāi)源的MES系統(tǒng)。該系統(tǒng)基于Java開(kāi)發(fā),具有廣泛的適用性和高度的可定制性,能夠滿(mǎn)足不同行業(yè)、不同規(guī)模企業(yè)的智能制造需求。
    的頭像 發(fā)表于 09-05 17:39 ?402次閱讀
    ?介紹<b class='flag-5'>一款</b>Java開(kāi)發(fā)的<b class='flag-5'>開(kāi)源</b>MES系統(tǒng)

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個(gè)問(wèn)題,這個(gè)第三方軟件必須手動(dòng)拖到容器正中間,手動(dòng)最大化。請(qǐng)問(wèn)有什么方法可以自動(dòng)實(shí)現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    如何挑選一款性?xún)r(jià)比高的家用路由

    家庭網(wǎng)絡(luò)已經(jīng)成為人們生活中不可或缺的部分。而選擇一款性?xún)r(jià)比高的家用路由器對(duì)于保障網(wǎng)絡(luò)連接質(zhì)量、提升網(wǎng)絡(luò)體驗(yàn)至關(guān)重要。本文將從性能、覆蓋范圍、安全性、易用性和價(jià)格等方面,為您介紹如何挑選一款
    的頭像 發(fā)表于 04-16 15:14 ?441次閱讀

    鴻蒙OS開(kāi)發(fā)學(xué)習(xí):【第三方庫(kù)調(diào)用】

    在Stage模型中,如何調(diào)用已經(jīng)上架到[三方庫(kù)中心]的社區(qū)庫(kù)和項(xiàng)目?jī)?nèi)創(chuàng)建的本地庫(kù)
    的頭像 發(fā)表于 04-14 11:34 ?828次閱讀
    鴻蒙OS開(kāi)發(fā)學(xué)習(xí):【第<b class='flag-5'>三方</b><b class='flag-5'>庫(kù)</b>調(diào)用】

    Meta Quest頭顯將支持多款安卓第三方應(yīng)用并行

    Meta已悄然啟動(dòng)了與此相關(guān)的功能,意味著Quest頭顯可同時(shí)操作多個(gè)第三方Android應(yīng)用。在此之前,Quest對(duì)第三方Android應(yīng)用有嚴(yán)格限制,用戶(hù)每次僅能打開(kāi)個(gè),無(wú)法實(shí)現(xiàn)同屏幕并行多個(gè)第
    的頭像 發(fā)表于 03-11 10:58 ?625次閱讀

    分享個(gè)據(jù)說(shuō)是比Wget、Curl更強(qiáng)大的下載工具

    aria2 是一款高效的命令行下載工具??胺Q(chēng)下載利器!
    的頭像 發(fā)表于 02-20 10:24 ?711次閱讀
    分享<b class='flag-5'>一</b>個(gè)據(jù)說(shuō)是比Wget、Curl更強(qiáng)大的下載<b class='flag-5'>工具</b>!

    【堅(jiān)果派】JS開(kāi)源庫(kù)適配OpenHarmony系列——第期實(shí)操

    由于OpenHarmony應(yīng)用是基于ArkTS開(kāi)發(fā),而ArkTS是在保持TypeScript(簡(jiǎn)稱(chēng)TS)基礎(chǔ)語(yǔ)法風(fēng)格的基礎(chǔ)上,對(duì)TS的動(dòng)態(tài)類(lèi)型特性施加更嚴(yán)格的約束,引入靜態(tài)類(lèi)型。因此在開(kāi)發(fā)OpenHarmony三方庫(kù)時(shí),建議首選在成熟的JS/TS
    的頭像 發(fā)表于 12-26 10:48 ?967次閱讀
    【堅(jiān)果派】JS<b class='flag-5'>開(kāi)源</b><b class='flag-5'>庫(kù)</b>適配OpenHarmony系列——第<b class='flag-5'>一</b>期實(shí)操

    python第三方庫(kù)有哪些

    Python 作為門(mén)功能強(qiáng)大的編程語(yǔ)言,擁有豐富的第三方庫(kù),幾乎覆蓋了各個(gè)領(lǐng)域的應(yīng)用。下面是些常見(jiàn)且廣泛應(yīng)用的 Python 第三方
    的頭像 發(fā)表于 11-29 14:31 ?2019次閱讀

    工業(yè)路由器-穩(wěn)定高效的網(wǎng)絡(luò)連接工具

    工業(yè)路由器-穩(wěn)定高效的網(wǎng)絡(luò)連接工具
    的頭像 發(fā)表于 11-16 11:21 ?456次閱讀

    OpenAtom OpenHarmony 三方庫(kù)創(chuàng)建發(fā)布及安全隱私檢測(cè)

    根據(jù)其開(kāi)發(fā)語(yǔ)言分為2種,種是使用JavaScript和TypeScript語(yǔ)言的三方庫(kù),通常以源碼或OpenHarmony HAR/HSP的方式引入,在應(yīng)用開(kāi)發(fā)中使用。另種是C和C
    發(fā)表于 11-13 17:27

    一款高效的直流-直流降壓開(kāi)關(guān)穩(wěn)壓器IC-G2406C

    G2406C1.5MHz,1A高效降壓DC-DC轉(zhuǎn)換器 概述: G2406C是一款高效的直流-直流降壓開(kāi)關(guān)穩(wěn)壓器,能夠提供高達(dá)1A輸出電流。G2406C在2.7V至5.5V的寬范圍輸入電壓下工作,使
    發(fā)表于 11-11 10:45

    開(kāi)源三方庫(kù)】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的組件框架

    點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們 開(kāi)源項(xiàng)目 OpenHarmony 是每個(gè)人的 OpenHarmony 萬(wàn)冬陽(yáng) 公司:中國(guó)科學(xué)院軟件所 小組:知識(shí)體系工作組 簡(jiǎn)介 Easyui是套基于ArkTS語(yǔ)言開(kāi)發(fā)的
    的頭像 發(fā)表于 11-09 10:55 ?623次閱讀
    【<b class='flag-5'>開(kāi)源</b><b class='flag-5'>三方</b><b class='flag-5'>庫(kù)</b>】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的組件框架

    Tablib:個(gè)Python的第三方數(shù)據(jù)導(dǎo)出模塊

    Tablib是個(gè)Python的第三方數(shù)據(jù)導(dǎo)出模塊,它支持以下文件格式的導(dǎo)出: Excel JSON YAML Pandas DataFrames HTML Jira TSV ODS CSV DBF
    的頭像 發(fā)表于 11-02 15:57 ?740次閱讀
    Tablib:<b class='flag-5'>一</b>個(gè)Python的第<b class='flag-5'>三方</b>數(shù)據(jù)導(dǎo)出模塊