做爲APP獨立開發者,身兼數職。開發技術的選擇不只關係到開發效率,學習成本,用戶體驗,因此尤其重要。如何選擇移動開發技術呢,你必須先要了解移動開發技術史,而後結合自身特色和項目特色來選擇。html
目前主流的移動開發都基於Android和iOS系統。咱們可使用java或者kotlin開發Android應用,使用Objective-C或者swift開發iOS應用。使用原生語言開發出來APP性能好用戶體驗好,但若是你的APP要支持兩個平臺那你必須用各自的原生語言分別開發。vue
因爲使用原生開發須要寫兩套代碼致使工做量翻倍。爲了解決這個通點,產生了像Cordova和Ionic這樣的經過H5頁面實現跨平臺開發的技術。java
原理:react
cordova/ionic簡單來講就是用H5技術棧(js、react、vue...)開發,依靠瀏覽器繪製UI、而後經過橋(js和java間的通信機制)來使用原生功能。web
性能方面:swift
因爲是瀏覽器繪製,以及依靠橋通信性能通常。瀏覽器
開發效率:app
任何Web的技術棧都能使用,所見即所得的開發模式,很方便。可是使用的開發者數量有限,致使現成插件數量有限,有時不得不本身開發。ionic
生態環境:性能
廣大的Web生態庫,cordova插件生態。
版本更新:
支持熱更新。
學習成本:
須要學習js、cordova、基礎的iOS和Android
若是你只會原生js開發,想要開發移動APP,你能夠嘗試下,用js開發的html都不須要改動就能直接在APP中打開。但因爲性能通常,適合作少交互,多更新(熱更新能夠頻繁推送)的展現型的APP。
因爲瀏覽器繪製效率不高,而移動APP又是重交互的。爲了解決這個通點,出現了像React Native這樣的技術。
原理:
Reacr Native簡單來講就是用React技術棧開發,而後經過橋(js和java間的通信機制)來使用原生功能和映射原生組件繪製UI。
性能方面:
因爲是原生繪製性能好,但仍然是依靠橋通信,頻繁通信影響性能。好比滑動動畫,在UI頻繁變更的時候,頻繁通信致使性能下降。
開發效率:
使用最流行的React的技術棧,一樣所見即所得很方便。開發者數量多,插件數量較豐富。
生態環境:
react native插件生態庫。
版本更新:
支持熱更新。
學習成本:
react語法、react native、基礎的iOS和Android
若是你會React,雖然不能只開發一套代碼就能同時在瀏覽器和移動APP裏使用,可是你可使用一種語法來支持全端開發。同時RN實現的APP繪製性能還不錯,支持熱更新,基本沒有短板,不少商業項目已經使用。
因爲React Native一樣存在橋的通信,性能不能達到最佳。Flutter抓住這一點橫空出世,使其性能與原生開發同樣好。爲何是跨時代的,由於以前技術都是從開發者的角度出發解決了跨平臺(因爲js開發人員衆多)。而flutter是從用戶角度出發反過來倒推開發人員學習。
原理:
flutter簡單來講就是不一樣平臺嵌入了統一的繪製引擎直接調用系統API進行繪製,因此性能基本和原生至關。
性能方面:
調用原生API性能很好。
開發效率:
一樣支持所見即所得的開發模式。
生態環境:
flutter畢竟剛出,生態還沒完善。可是有google背書,急劇上升的人氣,相信很快能完善。
版本更新:
目前不支持熱更新。
學習成本:
dart語法、flutter、基礎的iOS和Android,畢竟冷門語法
若是你不會web只會Android或iOS,flutter是最好的選擇,不只是趨勢,同時讓你有了全端的能力。雖然不支持熱更新,但憑藉超高的性能,APP體驗最好。
因此要根據本身的技術棧和APP的性能要求綜合起來選擇最合適本身的方式開發。
做者:魚籽醬yzh