簡評:所以 React-Native 和 Flutter 該怎麼選?
在 10 個月前的 MWC 上,谷歌釋出了 Flutter 的 Beta 版本,給跨平臺應用開發帶來了一種全新的選擇,昨天谷歌正式釋出了 Flutter 1.0 。下面我們來看看官方對 Flutter 的介紹吧。
Flutter 介紹
Flutter 並不是替代原生 iOS 和 Android 開發模式,相反,可以把 Flutter 理解為內建的一個引擎,可以把這個引擎引入到現有的工程或者全新的工程中。
Flutter 有以下四個特點:
- 精美。使用 Flutter 可以在螢幕上有畫素級的控制,並近乎可以不受限制的堆疊任何圖形、視訊、文字和控制元件。Flutter 內建了一系列的 widgets 可以在 iOS 和 Android 上實現極致的視覺體驗。Flutter 最大程度的實現了 Material Design ,可構建介面精美的應用。
- 速度快。它基於 Skia 2D 硬體加速圖形引擎,該引擎也同樣用在了 Chrome 和 Android 平臺。Flutter 的程式碼基於 Dart 平臺,它可以被編譯成 iOS 和 Android 平臺上 32 位和 64 位的 ARM 程式碼,媲美原生應用的速度。
- 高效。Flutter 引入了 Stateful Hot Reload ,無需重新啟動應用,就可以在程式執行的時候直接看到程式碼修改之後的效果,Stateful Hot Reload 改變了開發者們編寫應用的方式,開發者們在使用者反饋中表示該特性使開發效率提升了三倍。
- 開放。Flutter 是基於 BSD-style 許可的開源專案,全球有數百位開發者為其貢獻程式碼。Flutter 的外掛生態系統平臺也充滿活力。有數千款外掛已經發布,避免了重複造輪子。由於 Flutter 使用標準的 Android 和 iOS 的編譯打包工具,因此它的開放還體現在可以使用原生開發資源。比如,同樣可以在 Android 上使用 Kotlin 或者 Java,在 iOS 上使用 Swift 或者 Objective-C 來寫邏輯或者介面。
Flutter 1.0 新功能
1.0 主要修復 Bug 和提高穩定性,接入Dart v1.2。同時有兩個新功能將隨 1.0 的預覽模式提供給開發者們。它們將會於 2019 年二月的季度更新中正式推出,兩個特性分別是:
現有工程接入 Flutter (Add to App)
使用 Flutter 不一定需要從零開始構建整個應用,也可以在現有的專案中通過 Flutter 新增新功能,或者一步步的將整個專案遷移到 Flutter。谷歌會持續改善這一體驗,可以在 wiki 檢視現有的關於將 Flutter 引入應用的文章,也可以在 GitHub 上關注他們接下里的進展。
平臺級檢視 (Platform Views)
上一個功能是將 Flutter 接入工程,這個功能相反,是將 Android 或者 iOS 原生平臺控制元件嵌入 Flutter 應用中。谷歌引入了 AndroidView 和 UiKitView,可以分別把這兩個平臺的 widget 嵌入到對應的平臺中,像 Google Maps和 WebView 已經享受到這一特性帶來的好處了。
右下角的浮動按鈕是一個 50% 透明度的 Flutter widget
不僅僅是移動端
目前 Flutter 的首要平臺是 iOS 和 Android,同時也在探索擴充到手機端以外的更多平臺。
像 Flutter Desktop Embedding,這是一個使 Flutter 執行於 macOS、Linux 和 Windows 等桌面作業系統的專案。
同時本週,谷歌內部預覽了一個將極大擴充 Flutter 的執行平臺的實驗階段專案:
Hummingbird 是一個基於 Web 實現的 Flutter 執行時環境。利用 Dart 平臺同時能被編譯成 JavaScript 的特性,這個專案讓 Flutter 應用能夠毫無改動地執行在標準 Web 平臺。
這裡是關於 Hummingbird 的技術實現文章。