Flutter對(duì)比React Native

實(shí)現(xiàn)機(jī)制對(duì)比

React Native依賴web技術(shù),具有前端親和力,融合HTML標(biāo)簽思想,虛擬DOM的機(jī)制映射成原生的View.利用原生語(yǔ)言(Objective-C,JAVA)與JS橋接通信,實(shí)現(xiàn)一套跨平臺(tái)UI開(kāi)發(fā)框架,開(kāi)發(fā)層面是前端思想,實(shí)質(zhì)還是完全依賴iOS,安卓原生的view進(jìn)行渲染.
Flutter則是十分極客精神的作品,自己實(shí)現(xiàn)渲染引擎,脫離iOS,安卓原生的view的束縛,并且重新使用一門(mén)語(yǔ)言,集成自己的腳本解析引擎跟原生語(yǔ)言(Objective-C,JAVA)通信.

開(kāi)發(fā)方式,難易程度對(duì)比

React Native具備天然的web親和力,并且基于react.js的開(kāi)發(fā)思想,使得前端的人也可以通過(guò)短時(shí)間的學(xué)習(xí)迅速上手.
Flutter使用了一個(gè)新的Dart語(yǔ)言進(jìn)行開(kāi)發(fā),就使得開(kāi)發(fā)者需要重新學(xué)習(xí)這門(mén)語(yǔ)言,但好的是Dart語(yǔ)言簡(jiǎn)潔有力,上手也不會(huì)太難.

社區(qū)生態(tài)

論成熟度,React Native是2015年出來(lái)的,在當(dāng)時(shí)具備劃時(shí)代的新穎開(kāi)發(fā)思想,受到全球移動(dòng)開(kāi)發(fā)者的關(guān)注,參與使用者眾多且熱情,有了很多擴(kuò)展組件,滿足大部分移動(dòng)應(yīng)用開(kāi)發(fā)需求.
而且由于有了大量受眾就有了一個(gè)歷練場(chǎng),遇到的開(kāi)發(fā)問(wèn)題也能即使受到官方的重視.比如2017蘋(píng)果禁止熱更新的策略,在有可能波及到React Native的情況下, Facebook工程師及時(shí)的改進(jìn)了React Native熱加載iOS原生模塊使用的插入特殊section段進(jìn)行識(shí)別機(jī)制,以防止蘋(píng)果審核判定有熱更嫌疑.
另還有2018年上半年Airbnb發(fā)表一系列文章,在使用React Native中遇到的很多問(wèn)題,宣布放棄使用,在這樣的狀況下,React Native團(tuán)隊(duì)也是進(jìn)行了反思,計(jì)劃進(jìn)行底層的一些重構(gòu).這是一個(gè)框架朝著良性發(fā)展的好的態(tài)勢(shì).在熱度中成長(zhǎng),在批評(píng)中不斷完善.

Flutter是2018年出來(lái)并受到關(guān)注的.因?yàn)樗鼧O客的設(shè)計(jì),以及號(hào)稱吸取了React Native的一些缺點(diǎn)經(jīng)驗(yàn),尤其是性能方面進(jìn)行了改良,這些亮點(diǎn)使得大眾以驚嘆與敬畏的心情對(duì)它產(chǎn)生了興趣.是個(gè)有力的新生兒,這就說(shuō)明了它目前的社區(qū)生態(tài)還處于發(fā)展階段,一些第三方的擴(kuò)展組件需要時(shí)間,需要熱情的開(kāi)發(fā)者來(lái)慢慢填充,完善.
并且目前Flutter 還處于 beta階段,issue比較多.

國(guó)內(nèi)探索進(jìn)程

React Native:
京東團(tuán)隊(duì)比較早的進(jìn)行了探索研究,組織團(tuán)隊(duì)研究源碼,進(jìn)行庫(kù)的瘦身,加載性能優(yōu)化,拆分打包等等,并應(yīng)用于京東APP.
攜程團(tuán)隊(duì),由于展示型業(yè)務(wù)中心的產(chǎn)品,也是很積極地投身入React Native的使用探索.并且積極地對(duì)外發(fā)表團(tuán)隊(duì)的研究成果以及使用心得,具有很大的參考意義.
Flutter:
阿里巴巴閑魚(yú)團(tuán)隊(duì)最早進(jìn)行了嘗鮮踩坑,并有一幫極客的工程師熱情的對(duì)Flutter的底層做一些深入研究.也只在閑魚(yú)的商品詳情頁(yè)面使用了Flutter開(kāi)發(fā).
美團(tuán)也比較積極的進(jìn)行了一些探索,也是比較謹(jǐn)慎的先進(jìn)行比較深入的底層研究,對(duì)外也比較積極的發(fā)表文章共享一些研究成果.

第三方庫(kù),UI組件量

Flutter 目前有1000+ library。
ReactNatve 專用library有11000+ (以react-native名稱開(kāi)頭的包),與web開(kāi)發(fā)可以共用的包700000+

包體大小

App體積
Flutter iOS空項(xiàng)目 30M左右,Android空項(xiàng)目 7M左右。 (iOS需要額外集成Skia)
React Native iOS空項(xiàng)目 3M左右,Android20M左右。(Android會(huì)加入OKHttp導(dǎo)致體積增大)

跨平臺(tái)兼容問(wèn)題

Flutter是谷歌出的.因此Android上適配要比iOS好一些,RN在 Android 上有可能遇到兼容性問(wèn)題,但不是大問(wèn)題,有解決方案.
React Native在iOS上面兼容性好一些, iOS的控件直接取自原生的控件.

總結(jié)

React Native足夠成熟,Flutter是有力的新生力量.
React Native滿足正常的一些展示型的app開(kāi)發(fā)需求游刃有余.
Flutter滿足新鮮與極客技術(shù)的追求前提下,可以嘗試,但要及時(shí)關(guān)注業(yè)界對(duì)它的探索.

個(gè)人

曾對(duì)React Native實(shí)現(xiàn)機(jī)制有過(guò)研究積累,以及RN工程構(gòu)建源碼進(jìn)行過(guò)探索,對(duì)原生模塊類映射到j(luò)s層的橋接源碼進(jìn)行過(guò)研究.因此使用React Native進(jìn)行開(kāi)發(fā),就可以利用之前的經(jīng)驗(yàn),解決開(kāi)發(fā)中的問(wèn)題.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容