移動(dòng)端跨平臺(tái)框架對(duì)比

要了解移動(dòng)端跨平臺(tái)框架堡距,我們還是先要問(wèn)下猩系,什么是跨平臺(tái)媚送。

最常見(jiàn)的定義是:跨平臺(tái)就是開(kāi)發(fā)就是一套代碼寫(xiě)完以后可以多端發(fā)布運(yùn)行到各個(gè)平臺(tái),比如:iOS寇甸、安卓塘偎、web。

而wiki上拿霉,是這么定義的吟秩。

In computing, cross-platform software (also multi-platform software or platform-independent software) is computer software that is implemented on multiple computing platforms.

按照跨平臺(tái)實(shí)現(xiàn)的方式可以分為兩類(lèi):

  • 一類(lèi)是需要為每一個(gè)平臺(tái)進(jìn)行單獨(dú)的構(gòu)建或者編譯
  • 另一類(lèi),是可以直接在多個(gè)平臺(tái)運(yùn)行

移動(dòng)端跨平臺(tái)框架

對(duì)于移動(dòng)端绽淘,常見(jiàn)跨平臺(tái)框架如下表所示涵防。其中React Native就是需要對(duì)IOS和Andriod平臺(tái)分別編譯。


近年移動(dòng)端跨平臺(tái)框架熱度分布沪铭,如圖所示壮池。圖片引用自Cross-platform mobile framworks used by developers worldwide 2019 and 2020

常見(jiàn)移動(dòng)端跨平臺(tái)框架對(duì)比

發(fā)現(xiàn)React native,F(xiàn)lutter伦意, Cordova較為流行火窒。我們也這三個(gè)框架進(jìn)行對(duì)比。

對(duì)比維度 Apache Cordova Ract Native Flutter
背后支持 apple facebook google
開(kāi)發(fā)語(yǔ)言 使用標(biāo)準(zhǔn)的html語(yǔ)言開(kāi)發(fā)(HTML5, JavaScript and CSS3.)驮肉,運(yùn)行在特定平臺(tái)的native wrappers上熏矿。 采用JS語(yǔ)言開(kāi)發(fā),基于React Dart語(yǔ)言開(kāi)發(fā)离钝,F(xiàn)lutter runs in the Dart virtual machine, which features a just-in-time (JIT) execution engine.
支持平臺(tái) (依賴(lài)web view component的多平臺(tái)支持)

mobile – Android, iOS, Windows Phone;

desktop – OS X, and Electron (which can be run on Windows, Linux, and OS X).

但也導(dǎo)致跨平臺(tái)或者跨設(shè)備的issue票编,需要特殊處理
Android and iOS iOS and Android, web (beta), and desktop (technical preview)
學(xué)習(xí)門(mén)檻 low entry threshold

(僅需要html,css卵渴,js知識(shí))
基于React慧域,對(duì)前端工程師更友好,學(xué)習(xí)曲線低 “everything is a widget” 的理念與react.js和component-based JS frameworks相似浪读,對(duì)于熟悉這類(lèi)開(kāi)發(fā)工作的程序員有較淺的學(xué)習(xí)曲線

Dart需要重新學(xué)習(xí)昔榴,但是與typescript類(lèi)似
UI design 支持UI custom design RN可以利用原生已有的優(yōu)秀UI

RN控件轉(zhuǎn)換為對(duì)應(yīng)平臺(tái)原生控件的過(guò)程辛藻,IOS和Android存在一定的差異
UI在IOS和Android基本一致。支持Material, Cupertino or fully custom design.

但是Material, Cupertino UI的細(xì)節(jié)調(diào)整互订,較難實(shí)現(xiàn)
組件 大多數(shù)能夠找到吱肌,少部分需要原生定制開(kāi)發(fā) 大多數(shù)能夠找到,customized widgets需要自己實(shí)現(xiàn)仰禽,可以使用Dart開(kāi)發(fā)或者在原有widgets上開(kāi)發(fā)
performance and responsiveness heavily loaded interfaces can lead to performance bottlenecks 有效率問(wèn)題,RN的渲染機(jī)制是基于前端框架的考慮,復(fù)雜的UI渲染是需要依賴(lài)多個(gè)view疊加 使用高性能渲染引擎來(lái)繪 制 widget氮墨,有更好的可控性,native-like performance
與原生服務(wù)通信方式 在JavaScriptCore(js虛擬機(jī))基礎(chǔ)上,封裝各平臺(tái)的應(yīng)用層接口吐葵,定義了 Javascript 和封裝后的接口之間的通信協(xié)議规揪。以RN的橋接方式和原生服務(wù)通信 Flutter在跟系統(tǒng)service通信時(shí),通過(guò) Skia 和各平臺(tái)的底層圖形庫(kù)對(duì)接温峭,同時(shí)提供豐富的基于 Skia 的控件猛铅,來(lái)實(shí)現(xiàn)跨平臺(tái)的開(kāi)發(fā)。
安裝包 iOS空項(xiàng)目 3M左右诚镰,Android20M左右 iOS空項(xiàng)目 30M左右奕坟,Android空項(xiàng)目 7M左右
啟動(dòng)速度 與原生相差無(wú)幾 較慢
是否支持熱更新 支持 不支持
是否支持混編 支持 支持
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市清笨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刃跛,老刑警劉巖抠艾,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異桨昙,居然都是意外死亡检号,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)蛙酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)齐苛,“玉大人,你說(shuō)我怎么就攤上這事桂塞“挤洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵阁危,是天一觀的道長(zhǎng)玛痊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)狂打,這世上最難降的妖魔是什么擂煞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮趴乡,結(jié)果婚禮上对省,老公的妹妹穿的比我還像新娘蝗拿。我一直安慰自己,他們只是感情好蒿涎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布蛹磺。 她就那樣靜靜地躺著,像睡著了一般同仆。 火紅的嫁衣襯著肌膚如雪萤捆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天俗批,我揣著相機(jī)與錄音俗或,去河邊找鬼。 笑死岁忘,一個(gè)胖子當(dāng)著我的面吹牛辛慰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播干像,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼帅腌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了麻汰?” 一聲冷哼從身側(cè)響起速客,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎五鲫,沒(méi)想到半個(gè)月后溺职,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡位喂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年浪耘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塑崖。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡七冲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出规婆,到底是詐尸還是另有隱情澜躺,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布聋呢,位于F島的核電站苗踪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏削锰。R本人自食惡果不足惜通铲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望器贩。 院中可真熱鬧颅夺,春花似錦朋截、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拗慨,卻和暖如春廓八,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赵抢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工剧蹂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烦却。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓宠叼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親其爵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冒冬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356