rn中的路由需求文檔

一、概念

用來(lái)指定如何在app內(nèi)部實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)

二、使用場(chǎng)景

  • 端外拉起app后后室,跳轉(zhuǎn)到指定頁(yè)面

  • 端內(nèi)跳轉(zhuǎn)到指定頁(yè)面

  • h5、native混狠、rn不同的頁(yè)面之間都可以互相跳轉(zhuǎn)岸霹、傳遞參數(shù)

image.png

三、目標(biāo)

  • 一個(gè)UI頁(yè)面與一個(gè)uri關(guān)聯(lián)将饺,用Uri替代我們的頁(yè)面贡避。

  • 跳轉(zhuǎn)的時(shí)候就不需要強(qiáng)依賴(lài)UI頁(yè)面去做匹配痛黎,而只需要通過(guò)一段字符串去匹配就行

  • 實(shí)現(xiàn)頁(yè)面之間的解耦、跳轉(zhuǎn)刮吧、傳參

四湖饱、優(yōu)缺點(diǎn)分析

和傳統(tǒng)native路由跳轉(zhuǎn)相比較:

  • 簡(jiǎn)單易讀。通過(guò)字符串實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面并傳參

  • 頁(yè)面解耦杀捻。實(shí)現(xiàn)頁(yè)面間完全解耦

  • 靈活性強(qiáng)井厌。可通過(guò)動(dòng)態(tài)下發(fā)不同的字符串致讥,動(dòng)態(tài)控制跳轉(zhuǎn)的邏輯

  • 參數(shù)有限制仅仆。不支持復(fù)雜的數(shù)據(jù)格式

  • 依賴(lài)客戶(hù)端路由模塊的實(shí)現(xiàn)

五、技術(shù)調(diào)研

動(dòng)態(tài)路由方案

  • android

https://juejin.cn/post/7169017197442891806

  • iOS

https://juejin.cn/post/7087875341460439071

六垢袱、方案內(nèi)容

6.1墓拜、Uri格式

整體參考uri的格式

基本格式 = protocol://hostname/path = 協(xié)議://主機(jī)地址/路徑

image.png
  • protocal: 協(xié)議頭,對(duì)應(yīng)吊起app的協(xié)議scheme,用于端外请契,吊起app

  • hostname/path: 域名和路徑咳榜,用來(lái)指定頁(yè)面形態(tài),native姚糊、hrn贿衍、h5

  • query: 參數(shù)。注意:只支持字符串格式救恨。不包含端口號(hào)

    • pName: 頁(yè)面名稱(chēng)

    • 容器參數(shù):設(shè)置容器的初始化參數(shù)

    • rcName: rn中指定頁(yè)面的入口組件

    • 業(yè)務(wù)參數(shù): 頁(yè)面內(nèi)部使用的參數(shù)

示例:

app外

protocol://protal/containerType?pName=pageA&query=1

app內(nèi)

  • rn跳rn, h5跳rn
image.png
  • rn跳native释树,h5跳native
image.png
  • rn跳h5
image.png

6.2肠槽、參數(shù)

query信息分為三部分:

  • pName:頁(yè)面名稱(chēng)【必填】

  • 給容器使用的參數(shù):指定容器的一些行為. 所有字段使用rnc開(kāi)頭

  • 業(yè)務(wù)參數(shù): 業(yè)務(wù)內(nèi)部使用

 protal/hrn?pName=pageA&rncDegradeUrl=www.baidu.com
protal/hrn?pName=pageA&rncDegradeUrl=www.baidu.com&rncDegradeVersion=1.0.0&rncTransparent=1&rcName=index&id=123&name=zhangsan  

6.2.1、容器參數(shù)

query參數(shù)預(yù)留字段奢啥,指容器使用的字段:

預(yù)留字段命名規(guī)范:盡量避免和業(yè)務(wù)參數(shù)重名秸仙,推薦添加rn前綴 rnc react-native-container 和 react-native-config的簡(jiǎn)寫(xiě)

qurey字段名 含義 數(shù)據(jù)格式 默認(rèn)值 示例
pName 頁(yè)面名稱(chēng)。rn里也指bundle的名稱(chēng) 字符串 必填 pName=pageA
rncDegradeUrl 降級(jí)的url urldecode以后得url鏈接 undefined: 默認(rèn)沒(méi)有值 https://www.baidu.com
rncDegradeVersion 在某個(gè)版本以上降級(jí)桩盲,更低的版本不允許降級(jí) 字符串 undefined:默認(rèn)沒(méi)有值寂纪,不指定版本 “1.0.0”
rnIsDegrade 是否允許頁(yè)面降級(jí) 字符串, '0' 或者 ‘1’ “0”:不降級(jí) 1
rnType 容器類(lèi)型 "screen" "view" “screen”
rncTransparent 容器是否透明 字符串 “0” ~ “1” “0”: 不透明赌结,可以設(shè)置其他0-1之間的值捞蛋。1:全透明 0
rncHeight 50% 400px
rncRouterType 路由跳轉(zhuǎn)的類(lèi)型,用來(lái)控制是否走全頁(yè)面觸達(dá)的邏輯 字符串 base rncRouterType=base柬姚;rncRouterType=allPage拟杉,當(dāng)值為allPage的時(shí)候,相關(guān)參數(shù)需要按照全頁(yè)面觸達(dá)的要求傳參
rncIsTranslucentBar 是否沉浸式導(dǎo)航欄, 字符串 true rncIsTranslucentBar=true
rncBarMode 狀態(tài)欄文字的顏色 字符串 dark rncBarMode=dark light
hasTitleBar 是否為原始的頭部(Android 專(zhuān)用) 字符串 false hasTitleBar=false量承;hasTitleBar=true搬设;一般情況下不需要傳穴店,只有一些特殊頁(yè)面需要傳
字段名 含義 數(shù)據(jù)格式 默認(rèn)值 示例
rcName 加載的入口組件名稱(chēng),registerComponentName 字符串 index name="demo"
其他初始化參數(shù) rn頁(yè)面初始化的時(shí)候拿穴,傳遞的業(yè)務(wù)參數(shù) 字符串 undefined

native需要的參數(shù)(技術(shù)文檔:

https://alidocs.dingtalk.com/i/nodes/XPwkYGxZV3RP27rAFjoLwyaGWAgozOKL?utm_scene=team_space&utm_source=dingdoc_doc&utm_medium=dingdoc_doc_plugin_card

https://alidocs.dingtalk.com/i/nodes/m9bN7RYPWdlGzr1OUl0o9YqAWZd1wyK0?utm_scene=team_space&utm_source=dingdoc_doc&utm_medium=dingdoc_doc_plugin_card

<colgroup><col width="176"><col width="176"><col width="176"><col width="176"><col width="176"></colgroup>

參數(shù)名 含義 數(shù)據(jù)格式
redirectType native跳轉(zhuǎn)的類(lèi)型 字符串
redirectValue 具體的內(nèi)容 json字符串

6.2.2泣洞、參數(shù)的數(shù)據(jù)格式

下表為支持的數(shù)據(jù)格式,以及對(duì)應(yīng)的簡(jiǎn)寫(xiě)默色,

只支持基本數(shù)據(jù)格式斜棚,不支持?jǐn)?shù)組、字典等復(fù)雜的結(jié)構(gòu)

數(shù)據(jù)格式 iOS的類(lèi) Android的類(lèi) 簡(jiǎn)寫(xiě)前綴
字符串 NSString String S_
boolean BOOL boolean B_
數(shù)字 int NSInteger int I_
數(shù)字 float float float F_
數(shù)字double double double D_
數(shù)組 A_
map M_

示例:

比如需要往目標(biāo)頁(yè)面pageA傳遞三個(gè)參數(shù):

  • id:數(shù)字類(lèi)型该窗,1234535

  • name:字符串類(lèi)型,zhangsan

最終的跳轉(zhuǎn)鏈接如下:

protal/native?pName=pageA&id=I_1234535&name=S_zhangsan

6.2.3弟蚀、參數(shù)處理邏輯

除pName、rcName酗失、rnc開(kāi)頭的參數(shù)义钉,其它參數(shù)傳遞到rn頁(yè)面內(nèi)

6.2.4、當(dāng)前app的現(xiàn)狀

  • 暫無(wú)通用路由模塊规肴,主要以硬編碼實(shí)現(xiàn)跳轉(zhuǎn)為主捶闸。

  • 有全頁(yè)面觸達(dá)邏輯,

    • 需要提前配置好拖刃,只支持配置好的頁(yè)面

6.2.5删壮、rn中頁(yè)面跳轉(zhuǎn)邏輯

image.png
  • Android現(xiàn)在的架構(gòu)設(shè)計(jì),對(duì)路由跳轉(zhuǎn)有何影響

  • Android實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)邏輯的實(shí)現(xiàn)是怎么樣的兑牡,和通用路由協(xié)議是否有沖突的地方

    • 是否必須使用全頁(yè)面觸達(dá)央碟,如果不通過(guò)全頁(yè)面觸達(dá)是否有影響

    • 除了全頁(yè)面觸達(dá)的邏輯,還有沒(méi)有實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的寫(xiě)法

  • 全頁(yè)面觸達(dá)對(duì)通用路由協(xié)議的影響和相互之間的關(guān)系應(yīng)該是怎么樣的

七均函、風(fēng)險(xiǎn)

  • 安全性

八亿虽、收益

九苞也、方案評(píng)估結(jié)論

十洛勉、人員、排期

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末如迟,一起剝皮案震驚了整個(gè)濱河市收毫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殷勘,老刑警劉巖此再,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異劳吠,居然都是意外死亡引润,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)痒玩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淳附,“玉大人议慰,你說(shuō)我怎么就攤上這事∨铮” “怎么了别凹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洽糟。 經(jīng)常有香客問(wèn)我炉菲,道長(zhǎng),這世上最難降的妖魔是什么坤溃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任拍霜,我火速辦了婚禮,結(jié)果婚禮上薪介,老公的妹妹穿的比我還像新娘祠饺。我一直安慰自己择葡,他們只是感情好章办,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著更扁,像睡著了一般记劈。 火紅的嫁衣襯著肌膚如雪勺鸦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天目木,我揣著相機(jī)與錄音换途,去河邊找鬼。 笑死嘶窄,一個(gè)胖子當(dāng)著我的面吹牛怀跛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柄冲,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忠蝗!你這毒婦竟也來(lái)了现横?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阁最,失蹤者是張志新(化名)和其女友劉穎戒祠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體速种,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姜盈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了配阵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馏颂。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡示血,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出救拉,到底是詐尸還是另有隱情难审,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布亿絮,位于F島的核電站告喊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏派昧。R本人自食惡果不足惜黔姜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒂萎。 院中可真熱鬧秆吵,春花似錦、人聲如沸岖是。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豺撑。三九已至烈疚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聪轿,已是汗流浹背爷肝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陆错,地道東北人灯抛。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像音瓷,于是被迫代替她去往敵國(guó)和親对嚼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容