天天看點

初識Flutter認識FlutterFlutter特點移動端的跨平台技術對比Flutter總體架構

認識Flutter

官方介紹:Flutter是谷歌推出的的移動UI架構,可以快速在iOS和Android上建構高品質的原生使用者界面。 Flutter可以與現有的代碼一起工作。在全世界,Flutter正在被越來越多的開發者群組織使用,并且Flutter是完全免費、開源的。

Flutter 是一款移動程式sdk,包含架構、控件和一些工具,可以用一套代碼同時建構Android和iOS應用,并且性能可以達到原生應用一樣的性能(平滑,自然的滑動效果)

Flutter特點

• 跨平台:

現在Flutter至少可以跨4種平台(Linux、Android、IOS,MacOS、windows)甚至支援嵌入式開發。到目前為止,Flutter算是支援平台最多的架構了,具有良好的跨平台性,減少了開發成本。

• 高性能:

基于最底層Skia的圖形庫去渲染,不需要與原生平台之間頻繁的通信,是以性能更好,平滑而自然的滑動效果和平台感覺,為使用者帶來全新的體驗。

Flutter采用120fps(每秒傳輸幀數)的超高性能GPU渲染技術,而ReactNative隻能達到60fps

• 統一的UI:

Flutter提供了豐富的内置UI元件(包含許多核心的widget 滾動、導航、圖示、字型),保證不同平台的統一。

移動端的跨平台技術對比

H5技術:

采用Html+Javascript技術,比如目前流行的架構Vue,React、Angular都是通過建構網頁實作跨平台功能。

缺點:渲染效率低,使用者體驗差。同時網頁調用裝置硬體相關API困難。

React Native(RN):

也是使用javascript 語言進行跨平台App開發。但是和H5相比,它是在js運作時編譯成各個平台的native代碼。也就是通過js代碼調用原生的元件,實作相應的功能,支援熱部署。

缺點:渲染方法還是調用各平台的原生控件,架構本身需要處理大量平台的邏輯,随着系統版本變化和API變換,開發者也需要處理不同平台的差異,增加了維護成本,性能方面比H5有很大的提高,但還是會存在丢幀、白屏的問題。

Flutter:

使與之前采用的js語言不通,Flutter才用Dart語言,是以編譯時不需要js引擎。将代碼編譯成原生代碼,并且直接在各個平台中使用其高效渲染引擎Skia(Goole的一個2D圖像處理函數庫,支援跨平台。)進行渲染,不需要調用平台相關控件。完美的解決了不同平台的性能問題,實作一套代碼跨平台。

特點:高效渲染, 豐富的視圖元件,由于其渲染不依賴各平台元件,是以運作在不同的平台效果是一緻的,并且支援熱部署。

Dart

一種面向對象程式設計的強類型語言,文法像javascript+java的結合體。

在Flutter中使用Dart消除了對JavaScript橋層的需要,提高了性能。

Flutter總體架構

Flutter架構分為兩層:

初識Flutter認識FlutterFlutter特點移動端的跨平台技術對比Flutter總體架構

Flutter是基于Framework開發,運作在Engine上

Engine:

引擎部分,使用c++實作可以最大限制的發揮性能。是連接配接架構和系統的橋梁

  • Skia 圖像處理函數庫(其已作為Google Chrome,Chrome OS,Android, Mozilla Firefox, Firefox OS等其他衆多産品的圖形引擎)
  • Dart DartVm虛拟機
  • Text 在這表示紋理将圖檔、文本渲染到頁面。

Framework:

架構部分,使用Dart語言,該層提供了一系列基礎庫,用于處理動畫、手勢

  • Foundation 基礎 接口層
  • Animation 動畫
  • Painting 繪制
  • Gestures 手勢觸碰
  • Rendering 渲染,依賴于Dart UI層
  • Widgets 借鑒React Native 一切皆為元件的理念(帶狀态 無狀态)
  • UI 層

    Material 風格——Goole設計風格(Vue、Angular Bootstrap都有Material規範)也是Android的預設風格。

Cupertino風格—— IOS設計風格

雲頂雲(yundingyun.com)是國内首批專注于雲計算與大資料服務的提供商,緻力于“讓雲計算更簡單”。做為阿裡雲五星授權服務中心,雲頂雲緻力于為企業和政府提供方案咨詢、架構設計、部署實施、系統定制、運維托管、技術教育訓練等全方位“4S”級公有雲、私有雲定制化服務。

繼續閱讀