一、Ionic
1、概念:
ionic是基于Web技術(shù)HTML5、CSS3和JavaScript技術(shù)進行智能設(shè)備APP開發(fā)的框架,具有很好的跨平臺性能,被稱為Hybird App框架。這個框架的目的是從web的角度開發(fā)手機應(yīng)用,基于PhoneGap(Cordova)的編譯平臺,可以實現(xiàn)編譯成各個平臺的應(yīng)用程序。
2、Ionic能做什么?
可以快速開發(fā)移動App、移動端WEB頁面、混合app web頁面等
3、目前狀況
Ionic4目前已經(jīng)發(fā)布了基于Angular的正式版本,對 React 和 Vue 的支持尚處于 alpha 狀態(tài)(內(nèi)測)。Ionic需基于Angular來開發(fā),雖然目前有部分組件或者插件來支持react和vue,它未來的目標(biāo)是支持大部分主流的web框架,讓開發(fā)人員用自己喜歡的語言或框架來開發(fā)移動應(yīng)用。
4、優(yōu)缺點
優(yōu)點
(1)ionic 基于Angular語法,簡單易學(xué)
(2)ionic 是一個輕量級框架
(3)開發(fā)速度快且代碼易維護
(4)ionic提供了很多 UI 組件來幫助開發(fā)者開發(fā)強大的應(yīng)用
(5)ionic 提供了強大的命令行工具
(6)ios 和 android 基本上可以共用代碼,一次編碼,到處運行
(7)可實現(xiàn)在線更新,及時版本更新迭代
(8)有相對比較齊全的官方文檔缺點
(1)兼容性不夠好(android低版本、低設(shè)備,它更注重于兼容移動手機端而忽略瀏覽器端)
(2)性能不夠好,渲染速度慢
(3)沒有統(tǒng)一管理好插件庫,導(dǎo)致插件庫維護成本較高,且部分功能的插件庫可能缺失,需要自己封裝
(4)某些功能很難實現(xiàn)跟原生的互補,web技術(shù)無法解決一切問題
二、ReactNative(簡稱RN)
1、概念:RN是由facebook開源的基于JavaScript和React搭建的一套跨平臺的開發(fā)框架。React通過虛擬DOM的操作來控制真實的DOM,從而得到頁面的局部更新,提高GPU的渲染性能。它提倡的是Learn once,write anywhere,所以學(xué)習(xí)react,可以編寫web網(wǎng)頁、android和ios平臺的應(yīng)用。
2、RN能做什么?
開發(fā)跨平臺的app,android和ios兩個平臺統(tǒng)一一套代碼維護,實現(xiàn)相同的邏輯,UI方面除了部分APi或者組件有平臺的差異性以外,基本可實現(xiàn)相同的頁面和交互。
3、目前狀況
目前RN的最新版本為0.62,還沒出一個1.0的完整版本,而且學(xué)習(xí)文檔相對較缺乏,但是RN的活躍數(shù)較高,有比較活躍的社區(qū),開源的RN第三方庫也較多。
4、優(yōu)缺點
優(yōu)點
(1)比原生開發(fā)更為靈活和高效,對比h5的體驗更好,性能方面接近原生
(2)可以遠(yuǎn)程調(diào)試代碼,熱加載
(3)輕松實現(xiàn)熱更新,可以在線更新代碼
(4)跨平臺,實現(xiàn)一套代碼跑安卓和ios移動設(shè)備
(5)React Native實現(xiàn)不了的,可以通過原生來實現(xiàn),可以互補缺點
(1)學(xué)習(xí)成本較高
(2)即使是跨平臺,但是不同平臺的Api特性與顯示可能不一致,有些組件的顯示效果也是有平臺方面的差異
(3)調(diào)試必須依賴于網(wǎng)絡(luò),如果沒有網(wǎng)絡(luò)是無法load js的代碼
(4)Android上的一些兼容性問題
總結(jié)分析:
1.Ionic基于Angular.js開發(fā),正如RN基于react.js一樣,各有千秋,需要按項目需求來決定開發(fā)框架、技術(shù)選型,當(dāng)然本人更傾向于RN開發(fā)app,起碼在性能和功能上有比較好的保障。
2.Angular和React的渲染機制不太一樣,Angular的臟檢查使得任何變動都會產(chǎn)生固定的更新的代價,也就是說任何小變動都會引起界面的重繪。而React是通過虛擬DOM來操作真實的DOM,通過計算狀態(tài)變化的差異來進行界面渲染,只更新變化的內(nèi)容。
當(dāng)然,Angular也在不斷優(yōu)化,在渲染效率上也逐漸高于react。
3.從開發(fā)上:Ionic只需要懂JavaScript、h5、css等,不需要了解太多的原生開發(fā)語言,比較適合web前端開發(fā)人員。RN不僅需要一些js基礎(chǔ),還需要了解一些android和ios原生開發(fā)的基礎(chǔ)知識,比較適合移動開發(fā)人員。
從打包發(fā)布上:Ionic依賴Cordova打包,這就需要Cordova工具及時更新出適配Android和ios的版本,不然會出現(xiàn)一些兼容性問題,當(dāng)然也可以通過build之后的代碼在相應(yīng)的工具(AS、Xcode)中編譯打包,但可能由于版本等因素會出現(xiàn)一些編譯問題。RN的編譯打包主要通過AS、Xcode,工具的升級更新以及代碼的升級更新都比較方便。Ionic和RN都有相應(yīng)的熱更新插件,可以線上更新代碼。
參考鏈接:
Ionic中文文檔
Ionic英文文檔
cordova中文網(wǎng)
RN中文網(wǎng)
RN英文網(wǎng)