Flutter介紹 - Flutter,H5,React Native之間的對比

Flutter介紹

Flutter是Google推出的開源移動應用開發框架。開發者能夠經過開發一套代碼同時運行在iOS和Android平臺。react

它使用Dart語言進行開發,而且最終編譯成各個平臺的Native代碼,這樣既保證了開發效率,也保證了各個平臺的運行效率。其至關於從頭至尾重寫了一套UI框架,不依賴具體平臺的組件。其全部的組件都是"Widget"。渲染引擎則依靠高效渲染庫Skia實現。react-native

下面咱們對比一下H五、React Native、Flutter這些跨平臺的解決方案。架構

移動端的跨平臺技術

H5技術

常被人提起的H5技術,其實就是網頁+JavaScript。好比目前的一些流行的JS框架Vue,React,AngularJS等都是爲了構建網頁。針對移動端構建出來的網頁能夠實如今跨平臺的功能,可是其缺點也很明顯:框架

  • 渲染效率低下,用戶體驗差。不少H5在iOS平臺表現尚可,可是在Android上特別是一些低端機上的表現確實讓人不敢恭維。
  • 網頁調用設備硬件相關API比較困難,並且支持的功能較少,實現此類需求是H5的短板。

React Native

React Native(RN)發佈於2015年,也是使用JavaScript語言進行跨平臺APP的開發。與H5開發不一樣的是,它使用JS橋接技術在運行時編譯成各個平臺的Native代碼,其使用的技術Facebook的Flux技術。
其優勢是目前的生態比較成熟,目前也有不少跨平臺應用使用React Native。它也是跟Flutter對比的主要對象。
其特色是:性能

  • 使用JavaScript語言,因爲JS被普遍地使用,因此RN也很容易被接受。
  • RN依賴JS的運行時環境,也就是JS橋接技術。其使用Facebook的Flux架構。
  • RN僅提供了UI渲染和設備訪問的API,不少功能必須依賴第三方庫來實現對本地組件的使用。
  • 生態目前比較完善,使用的公司也比較多,特別是對JS比較熟悉的同窗容易上手。
  • 支持熱部署,開發過程當中能夠節約不少時間。

可是它也並非完美的:學習

  • 它的渲染方式仍是調用各個平臺的原生控件,有時須要針對不一樣的平臺作不一樣的優化。
  • 其性能相對於H5有很大的提升,可是並無完美解決,白屏,丟幀問題依然存在。

Flutter

Flutter也看到了目前的跨平臺解決方案並不完美,因此它借鑑了React Native的一些思想,作出了很大的優化。它將代碼編譯成原生代碼,而且直接在各個平臺中使用其高效渲染引擎Skia進行渲染,沒有橋接,不調用平臺相關控件。優化

這種設計思想完美解決了不一樣平臺的性能問題。ui

歸功於其設計思想,咱們能夠真正實現一套代碼,運行不一樣的平臺。在其推出以後,關注的開發者數量和相關的教程的增加速度遠超當時的React Native。設計

其特色包括:code

  • 使用Google自主開發的Dart語言。Dart語言是一個強類型的語言,很好地支持面向對象,而且易於學習和使用。
  • 使用谷歌本身的Skia渲染引擎,Android自帶Skia引擎,iOS平臺上Flutter也會把Skia引擎打包到APP中,實現高效渲染。
  • 目前有很是豐富的視圖組件,能夠點擊這裏查看其組件目錄,包括Android上經常使用的材料設計(Material Design)的UI風格,和iOS風格(Cupertino)。因爲其渲染不依賴各平臺相關組件,因此運行在不一樣平臺上的效果是一致的。
  • 一樣支持熱部署,開發時能夠像網頁開發同樣實時看到效果。

目前它存在的一些問題是:

  • 國內學習資源目前並不豐富,使用Flutter的公司也比較少。
  • 相關的生態尚未React Native那樣豐富,可是其發展速度大大超過了React Native。

總結

雖然Flutter目前並非很是流行,可是筆者相信它是跨平臺解決方案的將來。
若是谷歌的新系統Fuchsia OS能像當今的Android這樣如日中天,甚至替代掉Android的話,Flutter的發展也會迎來它的頂峯。

本系列博客咱們就來深刻學習和探討使用Flutter。

後面的文章咱們會逐步深刻學習Flutter的功能與實戰。
個人博客中關於Flutter的全部文章能夠點擊這裏找到,歡迎關注!

若是有問題能夠留言,或者給我發郵件lloyd@examplecode.cn,期待咱們共同窗習與成長!

相關文章
相關標籤/搜索