新項目要求重新選擇一個移動端框架,查了些資料做分析。
開發模式
當前app主流開發模式有
-
Native App(原生)
-
Web App (網頁)
-
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年))
-
PhoneGap(cordova) (當前比較主流的H5框架)
-
AppCan(簡單,付費,相對較少)
-
APICloud (官方號稱7天做出一個App,能實現功能,但是實際上組件比較少)
-
React Native(之前非常火,但是學習成本高,ios和android代碼並非通用)
-
AppMobi(聽說很厲害,但是國外項目,文檔少)
-
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 |
1、iOS和Android基本上可以共用代碼,一次編碼,到處運行 |
1、佔用內存高一些,性能體驗上,和原生存在差距 |
React Native |
JavaScript運行業務代碼,JS Bridge調用平臺組件,原生控件進行渲染 |
1、雖然不能做到一次編碼到處運行,但是基本上即使是兩套代碼, 也是相同的jsx語法, 使用js進行開發。 |
1、對開發人員要求較高,當官方封裝的 控件、API無法滿足需求時就必然需要懂一些native的東西去擴展,擴展性仍然遠遠不如web,也遠遠不如直接寫Native Code。 |
Flutter
|
自己實現了一套UI框架, 直接在系統底層渲染系統上層UI |
1、高生產效率。一套代碼可以開發出Android和iOS應用; |
Flutter採用Dart語言開發,屬於小衆語言,需要一切都要重新 學習。 |
選擇誰?
選框架需要先明確需求。比如:
1、支持業務好,可靠穩定
2、靈活,可擴展,快速響應,方便更新
3、用戶體驗好。
側重點不同,對框架的取捨也應該不同。
老闆說:我都要!
哭
我們項目最終選擇了Cordova。
原因:
1、cordova 支持熱更新,更靈活,便於及時響應需求,快速修復bug。(這是主要原因)
2、項目成員都有H5開發經驗,並且有人用過Cordova的,沒有但是沒有人用過React Native 和 Flutter。(cordova 上手快,學習成本低)
3、該項目是內部項目,對體驗要求相對低。(當前手機性能和網絡性能都比較好了,性能差距也沒那麼明顯)
ps:
網上有這樣一種說法:
公司主營項目最好用native實現核心功能,配合H5做擴展。保證穩定和用戶體驗。
內部項目用新技術,之前的RN,現在Flutter。快速響應需求,積累新技術。
我覺得還是一定有道理的。雖然最終沒有選這flutter,但是查資料過程中發現flutter的優勢還是比較多的。如果能實現在線熱更新,就完美了(不做熱更新是爲了防止蘋果封殺?)