一蚕冬、相同點
1、 跨平臺
2是辕、熱更新囤热、熱修復(fù)
3、響應(yīng)式視圖:采用響應(yīng)式視圖获三,維護了一個狀態(tài)機旁蔼,只更新改變的最小區(qū)域界面
4.?調(diào)用系統(tǒng)的service仍然需要封裝接口,仍然還是需要懂得native開發(fā)
4. ?提供異化iOS/android組件:對于不同的平臺(Android/iOS)提供風(fēng)格不同的控件疙教,以滿足不同平臺的設(shè)計理念棺聊。
5. ?JIT:
6.?可以單獨作為開發(fā)框架完成整個App的開發(fā),也可以與現(xiàn)有原生代碼相結(jié)合實現(xiàn)混合模式的開發(fā)贞谓。
二限佩、不同點
1、開發(fā)語言和框架
React-native: ? ?React-native組件+JS+橋接native? ? ? ?JavaScript -> react- > React-native
flutter: ?flutter組件+ dart語法 ???dart-> flutter?
2经宏、渲染方式對比:
1>犀暑、H5 + 原生
2>. React-native?
3>. flutter?
3、編譯效果
flutter 支持AOT(預(yù)編譯) 能夠com+s保存當(dāng)前文件代碼立馬出現(xiàn)界面效果烁兰,當(dāng)然修改了多個文件代碼時(或開發(fā)工具卡頓無法便已同步時)需要點擊同步按鈕進行同步。
RN 支持JIT需要啟動一個終端服務(wù)徊都,com+s保存代碼沪斟,立即重編譯,服務(wù)更新暇矫,界面更新
4. 社區(qū)熱度和第三方庫
RN 由facebook 封裝的框架主之,出生比較早,社區(qū)活躍李根,組件豐富
flutter 由谷歌封裝的框架槽奕,組件日益豐富
5. 上手難度
原生 >?H5 + 原生?> RN >?flutter?
H5 + 原生 和 RN 開發(fā)對于前端開發(fā)人員更簡單
flutter 對于移動端開發(fā)人員更容易上手, flutter 語言受眾比js 少
RN的界面布局更像網(wǎng)頁布局,而Flutter的布局更像native布局
6. 兼容性
Flutter在跨平臺這方面做得更徹底一些房轿,F(xiàn)lutter的UI框架性能貌似更高一些粤攒,但是直接丟棄了原生UI框架所森。而RN還是可以自己利用原生框架,兩個各有好處夯接。Flutter的兼容性高焕济,RN可以利用原生已有的優(yōu)秀UI
7. 開發(fā)復(fù)雜界面的難度
Flutter提供了一種響應(yīng)式視圖,無須JavaScript做橋接盔几;強大的API使得實現(xiàn)復(fù)雜的頁面效果成為可能晴弃;高性能的渲染機制使得120FPS的高頻率可以輕而易舉的實現(xiàn)。當(dāng)界面上的圖片數(shù)量越來越多時逊拍,與React Native相比上鞠,F(xiàn)lutter的優(yōu)勢會越來越明顯。
三芯丧、性能測試過程:
分別用Flutter芍阎、RN、原生開發(fā)三個項目注整,只有一個列表頁面能曾,10000條數(shù)據(jù),在三款低中高端機型中測試肿轨。
通過性能測試得出下表:
性能測試結(jié)論:
通過測試得出的數(shù)據(jù)結(jié)果寿冕,僅能從大體上比較出三者的性能,可能在實際的項目中會有些出入椒袍。
1驼唱、包體積原生比較小,F(xiàn)lutter和RN不相上下(Ios系統(tǒng)需要引入Skia庫驹暑,最終包體積Flutter會明顯大于RN)玫恳,由于Flutter和RN框架中需要一些C++依賴庫,導(dǎo)致包體積比原生大了很多优俘。
2京办、啟動時間,F(xiàn)lutter(冷熱啟動時間)>RN=原生
3帆焕、內(nèi)存占用惭婿,在高端手機上,flutter占用內(nèi)存是大于RN的叶雹,但是低端手機Flutter的內(nèi)存占用會低于RN财饥,RN內(nèi)存占用不穩(wěn)定,頁面剛生成的時候內(nèi)存占用會高一點, 之后緩慢回落折晦。
3钥星、CPU占用,RN明顯高于Flutter和原生满着,這會導(dǎo)致手機性能降低谦炒、耗電量增加贯莺、發(fā)熱更厲害
4、主觀感受编饺,F(xiàn)lutter要比RN更加流暢乖篷,體驗感更好,但是和原生仍有不小差距透且,不過Flutter還很年輕撕蔼,官方宣稱其性能會接近原生,甚至超過原生體驗秽誊,隨著Google不斷的改進相信在不遠(yuǎn)的將來會實現(xiàn)這個可能鲸沮。
參考文獻: