移動端框架選型

新項目要求重新選擇一個移動端框架,查了些資料做分析。

開發模式

當前app主流開發模式有

  1. Native  App(原生)

  2. Web App  (網頁)

  3. Hybrid App(混合)

這個圖說的還是很清楚的

 

總結一下:

混合開發靈活性好,兼容性強,功能更完備,所以當前項目考慮使用 混合開發模式。

 

Hybrid App混合開發

關於混合開發,下面幾篇文章說的還是比較清楚的。

混合應用開發定義和常見問題:

https://blog.csdn.net/bihansheng2010/article/details/100886979

APP混合模式開發方案:

https://www.jianshu.com/p/aeac270cb7d1

目前主流的幾種開發App方式介紹 :

https://www.jianshu.com/p/a7a77eb16a2a

 

當前主流框架:(分析來源:APP混合模式開發方案(2018年))

  1.  PhoneGap(cordova) (當前比較主流的H5框架)

  2. AppCan(簡單,付費,相對較少)

  3. APICloud (官方號稱7天做出一個App,能實現功能,但是實際上組件比較少)

  4. React Native(之前非常火,但是學習成本高,ios和android代碼並非通用)

  5. AppMobi(聽說很厲害,但是國外項目,文檔少)

  6. Flutter (跨平臺ui框架,新語言dart,不支持熱更新)

 

對比分析

經過討論,我們選擇其中的 Cordova、React Native、Flutter 作爲備選

對比分析:https://www.jianshu.com/p/900bf9cbd005

Flutter和RN對比:https://www.jianshu.com/p/51c4f7f6e446

 總結

框架名稱

核心邏輯

優勢

劣勢

Cordova

Cordova通過對HTML、CSS、JS封裝爲原生APP
(h5技術)

1、iOS和Android基本上可以共用代碼,一次編碼,到處運行
2、純web思維,開發速度快, 簡單方便,所有UI組件都是有html模擬,可以統一 使用。
3、可實現在線更新,允許動態加載web js
4、文檔多,開發者多,遇到問題容易解決,技術成熟

 

1、佔用內存高一些,性能體驗上,和原生存在差距
2、web技術無法解決一切問題,對於比較耗能的地方無法利用native的思維實現優勢互補,如高體驗的交互,動畫等。
3、html解析依賴瀏覽器,存在兼容性問題

React Native

JavaScript運行業務代碼,JS Bridge調用平臺組件,原生控件進行渲染
 

1、雖然不能做到一次編碼到處運行,但是基本上即使是兩套代碼, 也是相同的jsx語法, 使用js進行開發。
2、更貼近於原生開發,用戶體驗高於html, 開發效率較高
3、Flexbox佈局據說比native的自適應佈局更加簡單高效
4、可實現在線更新(???)

1、對開發人員要求較高,當官方封裝的 控件、API無法滿足需求時就必然需要懂一些native的東西去擴展,擴展性仍然遠遠不如web,也遠遠不如直接寫Native Code。
2、多平臺需要些多套代碼。

Flutter

 

自己實現了一套UI框架, 直接在系統底層渲染系統上層UI

1、高生產效率。一套代碼可以開發出Android和iOS應用;
2、Dart語言使得同樣的功能只需要很少的代碼;
3、迭代更加方便, hot reload功能;
4、創建優雅的、高度可定製的用戶界面。Flutter內置了對Material Design和Cupertino(iOS-favor)的UI組件庫;提供了可定製 的UI組件,不再受制於OEM控件的限制;
5、藉助可移植的GPU加速的渲染引擎以及高性能本地ARM代碼運行 時以達到跨平臺的高質量用戶體驗。
 

Flutter採用Dart語言開發,屬於小衆語言,需要一切都要重新 學習。

Flutter現在還處在Beta階段,第三方庫很少。

 

選擇誰?

選框架需要先明確需求。比如:

1、支持業務好,可靠穩定

2、靈活,可擴展,快速響應,方便更新

3、用戶體驗好。

側重點不同,對框架的取捨也應該不同。

老闆說:我都要!

 

我們項目最終選擇了Cordova。

原因:

1、cordova 支持熱更新,更靈活,便於及時響應需求,快速修復bug。(這是主要原因)

2、項目成員都有H5開發經驗,並且有人用過Cordova的,沒有但是沒有人用過React Native 和 Flutter。(cordova 上手快,學習成本低)

3、該項目是內部項目,對體驗要求相對低。(當前手機性能和網絡性能都比較好了,性能差距也沒那麼明顯)

 

ps:

網上有這樣一種說法:

公司主營項目最好用native實現核心功能,配合H5做擴展。保證穩定和用戶體驗。

內部項目用新技術,之前的RN,現在Flutter。快速響應需求,積累新技術。

我覺得還是一定有道理的。雖然最終沒有選這flutter,但是查資料過程中發現flutter的優勢還是比較多的。如果能實現在線熱更新,就完美了(不做熱更新是爲了防止蘋果封殺?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章