Flutter和RN對比

一、採用語言
Flutter開發語言是Dart,RN開發語言是React

React是JS語法,前端工程師上手快一些。通過css控制UI樣式,可讀性較高。

Dart是谷歌新推出的語言,風格跟Java kotlin JS有些相似的地方,是通過AOT編譯的,可以快速編譯成原生代碼,直接跟系統進行通信。UI各種嵌套,可讀性較差。

二.實現原理:
RN:利用JS來做橋接,將JS調用轉爲本地代碼調用,底層代碼會調用不同平臺原生代碼,會存在一套代碼在不同平臺展示出不同的樣式問題,差異比較大。一些API、屬性只支持某個特定的平臺,經常在代碼判斷平臺使用不用的API、屬性等,兼容性比較差。
Flutter:自己實現了一套UI框架,是底層自己實現圖形設備接口,直接在渲染系統上畫UI,兼容性高,一個頁面是一個整體,效率也高。

三.代碼調試
RN:因爲RN代碼是JS語言,所以需要在瀏覽器中調試

Flutter:可以在編輯器中直接下斷點調試,相對於RN,Flutter這種調試方式比較方便,更符合原生調試習慣。

四:集成難易程度及APK大小變化:
RN:在之前項目做過接入工作,通過橋接方式,步驟比較麻煩

Flutter:集成到項目中比較簡單,可以將Flutter代碼編譯成一個Module直接引入到已有的原生項目中,包括後面原生和Flutter交互可以自己寫插件。可以參照我寫的接入文檔:https://blog.csdn.net/qq_26936889/article/details/90768742

Flutter:新創建一個項目,之後通過以上方式集成Flutter,得出以下結果:打包前:2MB 打包後:6.5MB,但是IOS項目體積會比較大,因爲需要額外集成繪圖引擎(Skia)

RN:根據之前項目集成RN經驗,原生集成APK大小會增大10-20M,因爲RN so庫體積太大,之後通過拷貝RN源碼,去掉沒有用到的so庫解決此問題,但是也會是APK變大。IOS在這方面比較好,不會存在此問題。

五:性能
據網上評測,Flutter在高低端機的CPU上的表現都優於RN,尤其在低端的手機優勢更明顯

六:第三方庫
因爲RN出來時間比較早,有些庫還可以跟Web共用,所以在這方面RN要優於Flutter,在項目中使用會出現重複造輪子情況

七:熱更新
RN 支持,Flutter暫時不支持。

總結:
基於以上一些原因和實際代碼編寫體驗,我認爲Flutter比RN更優秀且更有前景。但是無論使用哪種跨平臺語言都需要冒一定的風險,遇到問題不一定能夠 hold 住,短時間內也不一定能帶來多少效率上的提升,還要對支持體系進行改造,成本比較大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章