- 原文地址:Why You Should Give Flutter Some of Your Attention
- 原文做者:Bruce Bigirwenkya
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:DateBro
- 校對者:Swants
跨平臺移動應用開發新方式前端
Flutter 是由 Google 開發,徹底開源的一款幫助開發者短期內在 iOS 和 Android 上開發高質量原生界面的移動應用 SDK。android
Flutter 剛剛發佈了 發佈預覽 1ios
瞭解爲何選擇 Flutter 須要明白其用途和各個平臺中的開發歷史。git
原生應用程序開發與跨平臺開發始終有明顯區別,有着各類優勢和缺點。github
跨平臺應用的確很是有吸引力。儘管如此,它仍然在不斷變化,最終填補了原生應用程序開發空間的空白。通常來講,移動開發也比較年輕(不到十年)。web
這篇文章 詳細介紹了移動開發中使用的視圖技術的歷史。編程
第一個跨平臺框架使用了 Web 技術並顯示 Web 視圖後端
在 Apple 發佈 iOS SDK 以前,他們鼓勵第三方開發人員爲 iPhone 搭建 web 應用,所以用 Web 技術搭建跨平臺應用是一個明顯的階段。緩存
響應式編程 是一種強調異步數據流與事件數據流的編程範式。在動畫和其餘渲染要求方面,它已經愈來愈多地被用於用戶界面開發。安全
像 ReactJS 這樣的響應式 Web 框架使用響應式編程技術來簡化 Web 視圖的構建。
根據編譯機制和視圖類型進行技術分類
傳統上,構建跨平臺應用會由於在不一樣領域運行而面臨性能損失。應用程序是用 JavaScript 開發但界面是徹底原生的。不一樣領域的變量不能互相訪問。不一樣領域的變量和數據交互都必須經過「橋」來完成。
例如,若是你在 Chrome 中調試 React Native 應用,這就意味着程序將在兩個不一樣的領域運行(桌面和移動)。而這些領域經過 WebSocket 鏈接起來。
React Native 的優化嘗試在運行時經過「橋」將數據交換保持在最低值。最終,每一個環境下的運行都很流暢但跨橋的交換的延遲會增大。
Flutter 依賴 Dart 語言的靜態編譯解決這個問題。這意味着在運行時再也不須要「橋」,由於程序會被編譯成原生代碼。
窗口組件是控制和影響應用程序的視圖和界面的元素。Flutter 中萬物皆組件。這使它更加自包含,可重用和可擴展。
傳統的佈局依靠的是不一樣 CSS 文件中定義的多項樣式規則。這些規則適用於標記,所以可以爲所應用的規則創造多種可能的交互和矛盾。CSS3 有大約 375 項規則。不考慮規則中可能存在的矛盾,佈局的可能性一般爲 N 階平方。
Flutter 從新設計的佈局更高效也更直觀。佈局信息由組件在建模時單獨指定。這不只使查看代碼的開發者更容易理解正在發生的事,並且還意味着窗口組件沒有處理可能不適用於它的規則的開銷。
Flutter 團隊提供了不少他們以爲用起來不錯的佈局組件。Flutter 也有不少圍繞佈局的優化,像爲了只在有必要生成大致積組件時的緩存。
Flutter 團隊使用 Dart 有如下幾個緣由:
你能夠從 這裏 瞭解更多關於 Flutter 上使用的 Dart 語言。
Flutter 應用的結構
可以在 Fuchsia 上使用。Fuchsia 是一個新的 開源 操做系統,如今由谷歌開發,這在科技愛好者圈子引發了很多的關注。不像 Android 和其餘流行的操做系統,它基於一個叫作「Zircon」的微內核。Flutter 已經和 Armadillo 一塊兒用來測試 Fuchsia 用戶界面 的開發了。
如今能感受出的缺點是基於過去的開發者經驗。這部分只用於突出 Flutter 項目的重要性和解決方案。證實了 Flutter 團隊的發展速度。
你能夠查看本文,以瞭解原生移動開發者在測試駕駛 Flutter 時面臨的挑戰。他們強調的一些問題在我看來很是有爭議,好比缺少 OpenGL 支持,容許 Flutter 使用 Skia,支持 OpenGL 做爲其後端之一。
因爲 Flutter 處於剛發佈不久,其餘你可能面臨的可能的挑戰包括:
前往 Flutter.io 瞭解怎樣入門 Flutter 。你還也查看底部參考資料部分中的內容。
總之,Flutter 入門將涉及下載 SDK 並配置使用它的路徑。在你使用的編輯器中安裝必要的插件是必要的下一步。
你可能在 Mac OS 上遇到依賴缺失問題 ,這能夠經過運行 pip install six 來解決。
當你嘗試運行 flutter upgrade 時,你可能遇到的另外一個問題是合併衝突。若是你已經測試了與 SDK 捆綁在一塊兒的 Flutter 示例,就會出現這種狀況。在這種狀況下,在運行 Flutter 升級命令以前進入 Flutter SDK 文件夾,存儲已更改的文件(git add.| git stash)很是有用。
我很高興嘗試它。若是你也是,請告訴我! ❤️🚀
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。