名詞解釋
Native: 原生客戶端,指iOS和Android食零;
1困乒、native只負(fù)責(zé)提供端能力,所有業(yè)務(wù)使用js開發(fā)贰谣。
特性:
適合新項(xiàng)目娜搂,項(xiàng)目創(chuàng)建后,即使用rn開發(fā)吱抚。
整個(gè)app從啟動(dòng)開始百宇,所有頁面都是rn開發(fā)的。
對初創(chuàng)公司的業(yè)務(wù)比較匹配
優(yōu)點(diǎn):
架構(gòu)簡單
適合小團(tuán)隊(duì)
對基建能力要求很低
缺點(diǎn):
僅適合小項(xiàng)目秘豹,大型項(xiàng)目無法使用該方式携御。
項(xiàng)目發(fā)展一段時(shí)間后,隨著頁面越來越多既绕,會出現(xiàn)性能問題啄刹。
2、rn作為app內(nèi)一個(gè)子模塊使用凄贩,一部分業(yè)務(wù)使用native開發(fā)誓军,一部分使用rn開發(fā)。
特性:
rn模塊比較獨(dú)立
和native彼此之間的交互比較簡單
只存在特定的入口和出口疲扎,以及少量的數(shù)據(jù)交互昵时。
優(yōu)點(diǎn):
架構(gòu)相對簡單
對基建能力要求較低
整個(gè)rn模塊作為一個(gè)包,或者拆分為基礎(chǔ)包和業(yè)務(wù)包兩個(gè)包评肆。rn的包管理比較簡單债查。
缺點(diǎn):
rn被局限到單一模塊內(nèi)部
rn無法漸進(jìn)式演化,覆蓋更多頁面瓜挽。
rn模塊內(nèi)部的頁面增多盹廷,也會出現(xiàn)性能問題。
適合存量項(xiàng)目做跨端改造久橙。
3俄占、頁面容器化管怠,rn和native在業(yè)務(wù)使用層面上互相交融,不分彼此缸榄。
特性:
rn和native在功能模塊之間渤弛,沒有明確的邊界,可以互相跳轉(zhuǎn)甚带,彼此傳遞數(shù)據(jù)她肯。
業(yè)務(wù)頁面由不同的容器承接,native容器鹰贵、rn容器晴氨。目前大廠基本采用這種使用方式
優(yōu)點(diǎn):
頁面管理靈活且精細(xì),業(yè)務(wù)可以隨意采取任意容器承接碉输。
可以漸進(jìn)式演化籽前。
由于每個(gè)頁面都是單一容器,rn都是單頁面的形式敷钾,可以有效避免rn的性能問題
缺點(diǎn):
項(xiàng)目架構(gòu)復(fù)雜枝哄,難度大。架構(gòu)設(shè)計(jì)不合理容易混亂阻荒,影響開發(fā)效率挠锥。
rn的包管理比較復(fù)雜
對團(tuán)隊(duì)能力和基建能力有更高的要求
4、跨端能力容器化-app工廠
介紹這個(gè)之前先簡介一下rn的包管理流程
rn的包管理流程
生產(chǎn)流程:
有一個(gè)頁面
使用rn開發(fā)完畢财松,產(chǎn)出rn代碼
rn代碼打包后產(chǎn)出 jsbundle包
將打包后的包上傳包包管理服務(wù)器
消費(fèi)流程
app通過內(nèi)部的包管理模塊瘪贱,拉取rn包的集合
當(dāng)用戶點(diǎn)擊跳轉(zhuǎn)到rn頁面時(shí),將對應(yīng)的rn包加載到rn的容器里
js代碼在rn容器內(nèi)部解析并執(zhí)行
渲染頁面出來
我們聚焦一下消費(fèi)流程辆毡,將整個(gè)流程涉及到的能力菜秦,封裝成一個(gè)單獨(dú)的包〔耙矗可以方便別的app的集成
意味著上述生產(chǎn)流程的所有內(nèi)容都是可以直接復(fù)用到新的app里球昨,或者其他存量app里
優(yōu)點(diǎn):
高復(fù)用,不僅僅是函數(shù)的復(fù)用眨攘、類的復(fù)用主慰、組件的復(fù)用。而是頁面級別的復(fù)用
高靈活性鲫售,有接近于h5的靈活性
和h5方案相比共螺,有更高性能
缺點(diǎn):
復(fù)雜度很高
對團(tuán)隊(duì)能力要求很高
基建設(shè)施要求很高
其他文章:
React Native 三端同構(gòu)在雪球的實(shí)踐 - 掘金