ionic :
優(yōu)勢:
ios 和 android 基本上可以共用代碼,純web思維,開發(fā)速度快,簡單方便,一次編碼,到處運行,如果熟悉web開發(fā),則開發(fā)難度較低。
文檔很全,系統(tǒng)級支持封裝較好,所有UI組件都是有html模擬,可以統(tǒng)一使用。
可實現(xiàn)在線更新 允許加載動態(tài)加載web js
文檔多,開發(fā)者多,視頻教程多 容易學(xué)習(xí) 遇到問題容易解決 技術(shù)成熟
劣勢:
占用內(nèi)存高一些(不過手機內(nèi)存都大了不影響),不適合做游戲類型app, web技術(shù)無法解決一切問題,對于比較耗性能的地方無法利用native的思維實現(xiàn)優(yōu)勢互補,如高體驗的交互,動畫等。
react-native :
優(yōu)勢:
1、雖然不能做到一處編碼到處運行,但是基本上即使是兩套代碼,也是相同的jsx語法,使用js進行開發(fā)。用戶體驗,高于html,開發(fā)效率較高 2、flexbox 布局 據(jù)說比native的自適應(yīng)布局更加簡單高效
可實現(xiàn)在線更新 2015.7.28 AppStore審核政策調(diào)整:允許運行于JavascriptCore的動態(tài)加載代碼
更貼近原生開發(fā)
劣勢:
1、(引)對開發(fā)人員要求較高,不是懂點web技術(shù)就行的,當(dāng)官方封裝的控件、api無法滿足需求時 就必然需要懂一些native的東西去擴展,擴展性仍然遠遠不如web,也遠遠不如直接寫Native code。
2、(引)官方說得很隱晦:learn once, write anywhere。人家可沒說run anywhere。事實上,從官方的api來看SliderIOS,SwitchIOS..等等這些控件,之后勢必會出現(xiàn)SliderAndroid,SwitchAndroid...,也就是很可能針對不同的平臺會需要寫多套代碼。
3、發(fā)展還不成熟,目前很多ui組件只有ios的實現(xiàn),android的需要自己實現(xiàn)。
(引)從Native到Web,要做很多概念轉(zhuǎn)換,勢必造成雙方都要妥協(xié)。比如web要用一套CSS的閹割版,Native通過css-layout拿到最終樣式再轉(zhuǎn)換成native原生的表達方式(比如iOS的Constraint\origin\Center等屬性),再比如動畫。另外,若Android和iOS都要做相同的封裝,概念轉(zhuǎn)換就更復(fù)雜 5、文檔還不夠完整 學(xué)習(xí)曲線偏高
4.文檔少 學(xué)習(xí)起來困難
native :
優(yōu)勢:
最好的體驗以及功能實現(xiàn)。
完善成熟的開發(fā)文檔以及demo。
劣勢:
android開發(fā)學(xué)習(xí)曲線較高。
各個平臺分開開發(fā) 很難有iOS,android雙平臺高手。
開發(fā)成本高