一些flutter和react native對(duì)比的文章

  1. Flutter 與React Native 對(duì)比

[關(guān)于性能]
跨平臺(tái)開發(fā)第一個(gè)考慮的就是性能問(wèn)題
RN的效率由于是將View編譯成了原生View,所以效率上要比基于Cordova的HTML5高很多,但是它也有效率問(wèn)題,RN的渲染機(jī)制是基于前端框架的考慮,復(fù)雜的UI渲染是需要依賴多個(gè)view疊加.比如我們渲染一個(gè)復(fù)雜的ListView,每一個(gè)小的控件,都是一個(gè)native的view,然后相互組合疊加.想想此時(shí)如果我們的list再需要滑動(dòng)刷新,會(huì)有多少個(gè)對(duì)象需要渲染.所以也就有了前面所說(shuō)的RN的列表方案不友好;
Flutter 吸收了前兩者的教訓(xùn)之后,在渲染技術(shù)上,選擇了自己實(shí)現(xiàn)(GDI),由于有更好的可控性,使用了新的語(yǔ)言Dart,避免了RN的那種通過(guò)橋接器與Javascript通訊導(dǎo)致效率低下的問(wèn)題,所以在性能方面比RN更高一籌;有經(jīng)驗(yàn)的開發(fā)者可以打開Android手機(jī)開發(fā)者選項(xiàng)里面的顯示邊界布局,發(fā)現(xiàn)Flutter的布局是一個(gè)整體.說(shuō)明Flutter的渲染沒(méi)用使用原生控件進(jìn)行渲染
[關(guān)于開發(fā)體驗(yàn)]
Hot Reload(熱重載),這個(gè)對(duì)于原生開發(fā)者是一個(gè)福音,特別是Android開發(fā)者,Android原生改一個(gè)東西運(yùn)行需要好久時(shí)間;對(duì)于Cordova和RN,差別不大,兩個(gè)基本都可以支持熱重載
Widget(組件)
這點(diǎn)和RN的component有些類似,但是比RN更徹底,Flutter自身提供了很多基于 Material Design and Cupertino (iOS-flavor) 風(fēng)格Widget,這點(diǎn)也和Google對(duì)它的定位有關(guān)(Flutter is Google’s mobile UI framework),大家在開發(fā)的時(shí)候更簡(jiǎn)單,特別對(duì)于美工UI設(shè)計(jì)師薄弱中小公司更是福音;? 其他
Dart Flutter使用了新的開發(fā)語(yǔ)言,這個(gè)語(yǔ)言相信大家都沒(méi)聽說(shuō)過(guò),這個(gè)google推出的新的編程語(yǔ)言,屬于動(dòng)態(tài)語(yǔ)言,”結(jié)構(gòu)化的web編程”語(yǔ)言,語(yǔ)法與Javascript 的ES6標(biāo)準(zhǔn)有些類似,有Java和C#語(yǔ)言基礎(chǔ),理解起來(lái)不難.缺點(diǎn)是程序猿們又要學(xué)習(xí)一門新語(yǔ)言了;
除了效率和Widget之外,最期待的還是Flutter的渲染方式,不說(shuō)跨平臺(tái)的開發(fā)語(yǔ)言,就單單Android原生開發(fā),不同的手機(jī)對(duì)不同控件的渲染可能就有不同,希望Flutter自己的渲染平臺(tái)能解決這個(gè)問(wèn)題

  1. Flutter 和 ReactNative 的區(qū)別

從實(shí)現(xiàn)原理上來(lái)講 ReactNative 提供的組件都是繼承自原生 Native 的 View 組件榄檬,比如ReactNative 中的 ListView 在 Android 中就是繼承自 ListView 奥额,還有 RecycleView衔峰。然而 Flutter 則不同捺癞,它的所有 UI 組件都是一幀一幀畫出來(lái)的。這樣也能夠很準(zhǔn)確蓉媳,也很靈活的做出你想要的 UI 蜕乡。其次它還非常人性化的貼近了平臺(tái)的特性,比如 Android 的 Material Design 在 Flutter 就默認(rèn)支持了進(jìn)去设捐。其實(shí)話說(shuō)回來(lái)借浊,在開發(fā)者角度來(lái)講這兩個(gè)跨平臺(tái)都是一樣的使用效果,畢竟都是通過(guò)一套語(yǔ)言來(lái)搭建可運(yùn)行不同平臺(tái)的應(yīng)用萝招。然而蚂斤,F(xiàn)lutter 使用 Dart 語(yǔ)言開發(fā)而 ReactNative 則使用 JS 結(jié)合 XML 來(lái)開發(fā)的。這就有問(wèn)題了槐沼。

  1. React Native VS Flutter評(píng)測(cè)

React Native較小的安裝包帶來(lái)的優(yōu)勢(shì)不僅是降低了下載門檻曙蒸、減少了磁盤占用, 而且對(duì)于混合開發(fā)的壓力也更小. 試想一個(gè)原生App因?yàn)閹讉€(gè)頁(yè)面使用了Flutter, 一行代碼沒(méi)寫安裝包就憑空增加了30MB, 這樣的結(jié)果不是開發(fā)人員希望看到的.
啟動(dòng)速度RN依然與原生不相上下, 并且要比Flutter好上一個(gè)等級(jí). RN雖然使用js來(lái)構(gòu)建應(yīng)用程序, 但最終RN會(huì)將js轉(zhuǎn)化成原生代碼. 這就讓RN的運(yùn)行效率高出Flutter好幾倍.
內(nèi)存占用方面, RN顯然沒(méi)有原生做的好, 與Flutter的差距也不大, 而且經(jīng)測(cè)試發(fā)現(xiàn), RN的內(nèi)存占用不是很穩(wěn)定, 頁(yè)面剛生成的時(shí)候內(nèi)存占用會(huì)高一點(diǎn), 之后緩慢回落.

  1. 流言終結(jié)者- Flutter和RN誰(shuí)才是更好的跨端開發(fā)方案?

1.Flutter在高低端機(jī)的CPU上的表現(xiàn)都優(yōu)于RN岗钩,尤其在低端的小米2s上有著更優(yōu)的表現(xiàn)
2.Android端在原來(lái)FPS基礎(chǔ)上增加了流暢度的指標(biāo)纽窟,F(xiàn)PS和流暢度的表現(xiàn)Flutter優(yōu)于RN(計(jì)算規(guī)則見附參考文章)
3.Android端的內(nèi)存也是值得關(guān)注的一點(diǎn),在小米2s上起始內(nèi)存Flutter明顯比RN多40M兼吓,RN在測(cè)試過(guò)程中內(nèi)存飛漲臂港,F(xiàn)lutter相比之下會(huì)更穩(wěn)定,內(nèi)存上RN側(cè)的代碼是需要調(diào)優(yōu)的,同一套代碼Flutter在Android和iOS上并沒(méi)有很大的差異审孽,但是RN的卻要在單端調(diào)優(yōu)县袱,F(xiàn)lutter在這項(xiàng)比拼上又更勝一籌。 比較奇怪的是三星S8上Flutter和RN的初始內(nèi)存是一致的佑力,猜測(cè)是RN也Android高端機(jī)型上也會(huì)預(yù)分配一些內(nèi)存显拳,具體細(xì)節(jié)還需要更進(jìn)一步的研究。

  1. 高頻數(shù)據(jù)交換下Flutter與ReactNative的對(duì)比

ReactNative在滿幀的情況下實(shí)際是卡住的搓萧,不能切換路由杂数,后端服務(wù)關(guān)閉后仍然會(huì)執(zhí)行一段時(shí)間,證明有事件堆積瘸洛。
而Flutter不會(huì)影響路由切換揍移,因?yàn)镕lutter的路由切換在ui主線程上,而react-navigation跑在js線程上反肋。Flutter雖不滿幀但可以實(shí)時(shí)更新數(shù)據(jù)那伐。
總結(jié):在某些高性能場(chǎng)景下仍需要跨平臺(tái),F(xiàn)lutter是你唯一的選擇石蔗!
Flutter的性能還可以進(jìn)一步優(yōu)化罕邀,例如采用udp發(fā)送行情數(shù)據(jù)、protobuf替換掉json也會(huì)有比較好的收益

  1. Flutter與React Native

Flutter為布局提供了豐富的組件類养距,具體請(qǐng)查看API https://flutterchina.club/docs/诉探。但是相對(duì)比較麻煩的,比如Image組件就分為new Image.network(加載網(wǎng)絡(luò)圖片)和 Image.asset(加載本地圖片)棍厌,在測(cè)試中我使用過(guò)這個(gè)組件肾胯,但是不知道什么原因,width屬性設(shè)置了也沒(méi)見效果耘纱,height和其他的屬性倒是沒(méi)什么問(wèn)題敬肚。
React Native帶來(lái)了組件化開發(fā)的思想,所謂組件束析,即封裝起來(lái)的具有獨(dú)立功能的UI部件艳馒。React Native 推薦以組件的方式去重新思考UI構(gòu)成,將UI上每一個(gè)功能相對(duì)獨(dú)立的模塊定義成組件员寇,然后將小的組件通過(guò)組合或者嵌套的方式構(gòu)成大的組件弄慰,最終完成整體UI的構(gòu)建(摘自網(wǎng)絡(luò))。
React Native使用兩種數(shù)據(jù)來(lái)控制一個(gè)組件:props和state丁恭。props是在父組件中指定曹动,而且一經(jīng)指定,在被指定的組件的生命周期中則不再改變牲览。 對(duì)于需要改變的數(shù)據(jù)墓陈,則需要使用state(摘自網(wǎng)絡(luò))恶守。
在性能方面Flutter還是比React Native快一點(diǎn),開發(fā)難度方面React Native比Flutter更加簡(jiǎn)潔方便贡必,
架構(gòu)思想上React Native也相對(duì)較好兔港。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仔拟,隨后出現(xiàn)的幾起案子衫樊,更是在濱河造成了極大的恐慌,老刑警劉巖利花,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件科侈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡炒事,警方通過(guò)查閱死者的電腦和手機(jī)臀栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挠乳,“玉大人权薯,你說(shuō)我怎么就攤上這事∷铮” “怎么了盟蚣?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卖怜。 經(jīng)常有香客問(wèn)我屎开,道長(zhǎng),這世上最難降的妖魔是什么韧涨? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任牍戚,我火速辦了婚禮,結(jié)果婚禮上虑粥,老公的妹妹穿的比我還像新娘。我一直安慰自己宪哩,他們只是感情好娩贷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锁孟,像睡著了一般彬祖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上品抽,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天储笑,我揣著相機(jī)與錄音,去河邊找鬼圆恤。 笑死突倍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播羽历,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼焊虏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了秕磷?” 一聲冷哼從身側(cè)響起诵闭,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澎嚣,沒(méi)想到半個(gè)月后疏尿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡易桃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年润歉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颈抚。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踩衩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贩汉,到底是詐尸還是另有隱情驱富,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布匹舞,位于F島的核電站褐鸥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赐稽。R本人自食惡果不足惜叫榕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姊舵。 院中可真熱鬧晰绎,春花似錦、人聲如沸括丁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)史飞。三九已至尖昏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間构资,已是汗流浹背抽诉。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吐绵,地道東北人迹淌。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓河绽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親巍沙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葵姥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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