iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 2
3
Mobile Development

Flutter---Google推出的跨平台框架,Android、iOS一起搞定系列 第 2

【Flutter基礎概念與實作】 Day2–Flutter v.s React Native

今天的內容著重在Flutter的特色介紹以及和React Native的比較。如果你還在猶豫該學Flutter還是React Native,希望今天的內容對你的選擇有幫助。

Flutter的特色

  • UI as Code
    在Flutter的世界所有東西都是widget,無論是Button TextView Icon Container,Flutter的UI就是一個龐大的widget Tree
    設計UI不用像寫Android App,使用xml格式撰寫或是用拖拉的方式排版,還必須考慮到不同螢幕大小的手機真是麻煩。
    在Flutter我們只寫程式碼就能用一堆方便強大的widget快速的完成介面設計。
  • Hot Reload
    超方便的功能,讓開發更加迅速
    Hot Reload就是在我們儲存更改的程式碼後,App就能有相對應的改變,不用重新編譯安裝。
    讓我們可以有更好的開發效率,添加UI元件、測試功能或debug都能很迅速的取得回饋,而不需像原本的Android就連更改文字或測試簡單功能都需要重新編譯執行花費一大堆等待時間。

  • 擁有原生效能
    Flutter將程式碼編譯成各平台的native code,讓它無論是在ios或是Android都能擁有很好的效能。而且Flutter處理widget和layout的方式也讓使用者體驗起來更加流暢。
    細節可以參考這篇文章
  • 包容平台間的差異
    Android和iOS在介面的呈現或動畫原本就會有所差異(設計風格不同),但Flutter卻可以相容兩個平台的差異,讓你的App在兩個平台的介面差異不會太大。
  • 一份程式碼雙平台通用
    除了特定平台的功能外,基本上只要寫一份程式碼就可以讓兩個一起平台使用(節省一半時間)

Flutter如何轉換成Native Code

Flutter的架構分成三層:

  • Framework:使用Dart實作,包括內建的Material/Cupertino widget,flutter的package以及和下層(Engine)的Api等等。
  • Engine:使用C++實作,主要內容是Skia,Skia是開源的2d渲染引擎,能在低端裝置如手機上呈現高品質的2D圖形。
  • Embedder:嵌入層,把Flutter嵌入到各個平台上,這層主要是Render Surface和Thread的設置,基本上這層要做的事情不多因此Flutter能提供更好的跨平台一致性。
    Flutter SDK使用ahead-of-time(AOT)技術將Dart Code編譯成native code。

Flutter v.s React Native

框架 Flutter React Native
Hot Reload 支援 支援
發展時間 2017年 2015年
Component 由Google Team開發 預設的較少,基本上需要第三方支援
程式語言 Dart JavaScript
文件 非常詳細易讀 第三方Library文件品質不一
社群 發展中 成熟
效能 直接轉成native code 需透過Bridge與平台溝通
App大小 較小 較大

兩者比較之下,React Native由於發展了一段時間了社群已經成熟,不論是範例或三方套件的資源都非常豐沛,不論是要學習或問問題都很容易,使用的語言也是大眾的JavaScript開發。

Flutter的優點是有Google這強大的後盾,從發布以來支援的套件越來越多而且質量很好(大多都是Flutter Team開發),Flutter的Youtube頻道也經常發布教學影片推坑,本身的效能也是優於React Native很多。

網路上比較Flutter和React Native的評論有90%以上都是傾向Flutter,而且現在開始學是非常好的入場時機,線上資源和框架都逐漸穩定,而且會Flutter的人還不多若有職缺競爭者相對少。

賭一波Flutter未來的發展性,我想是不會虧的。

今日總結

今天的內容希望有打動你踏入Flutter的世界。
明天開始接連3天是Dart語言的介紹,如果你已有程式基礎那就稍微擔待一下內容可能有些簡單;如果是剛學寫程式的朋友我的教學內容都有提供程式碼,你可以透過線上Dart編譯器練習,不必緊張。


上一篇
【Flutter基礎概念與實作】 Day1–Flutter是什麼,能吃嗎?
下一篇
【Flutter基礎概念與實作】 Day3–Dart Language(1)
系列文
Flutter---Google推出的跨平台框架,Android、iOS一起搞定30

1 則留言

0
davidhu0903ex3
iT邦新手 5 級 ‧ 2020-08-06 03:31:15

很詳細的比較!

我要留言

立即登入留言