原生代碼開發(fā)的應(yīng)用
優(yōu)點:
運行效率高,界面響應(yīng)速度快,動畫效果流暢,用戶體驗較好。
缺點:
太死板,只能通過修改原生代碼來改變界面中的內(nèi)容,布局。如果是iOS應(yīng)用,光是走更新上架就需要至少兩天時間。
技術(shù)門檻較高,尤其是iOS,還需要使用objective-c或swift。
不跨平臺,一個應(yīng)用需要Android和iOS兩套代碼,需要兩個技術(shù)團隊來維護。
混合應(yīng)用:
優(yōu)點:
能夠根據(jù)服務(wù)端返回的內(nèi)容隨意修改應(yīng)用中的內(nèi)容,甚至是布局,甚至是添加新功能。靈活,技術(shù)門檻低,一個前端開發(fā)工程師也是可以快速的學(xué)會開發(fā)移動應(yīng)用的。
跨平臺開發(fā),write once ,run anywhere。代碼只需要寫一次就可以在不同平臺上運行。
缺點:
應(yīng)用是網(wǎng)頁代碼,html和js寫出來的,在一些對計算要求比較高的操作上,比如動畫效果會比原生代碼開發(fā)的應(yīng)用差一些。
不過,一些好的混合開發(fā)框架都會考慮到這個事情,也會在這個方面極力的改善自己框架在手機上的運行效果。比如react-native和weex。全都是js代碼寫成的應(yīng)用,界面中的元素只是一層虛擬dom,等到需要打包時,在把js邏輯,界面布局,樣式打包在一起,會大大提高運行效率。
一些好的混合開發(fā)框架
react-native,與之對應(yīng)的還有前端框架react,編寫也是使用reactjs來編寫。
weex,支持vue和rax前端框架,類似于react-native,編寫是使用vue.js的語法來編寫。
flutter,與react-native和weex不同,他是自己來維護一套UI,而不是像react-native和weex,把virual dom通過渲染指令使用原生系統(tǒng)提供的UI來渲染界面。具體效果怎么樣還有待研究。
以下這些框架都是通過webview來實現(xiàn)移動端功能,直接編寫html和css,運行性能完全受webview的限制。
ionic,cordova,
mui,DClound推出的移動端開發(fā)框架,優(yōu)點是有自己的開發(fā)工具HBuilder。
jquery mobile,jquery為了適應(yīng)在移動端應(yīng)用中使用而推出的框架。
各種框架都有為了原生效果而開發(fā)的原生插件。
一款好的應(yīng)用應(yīng)該是原生與混合共同使用的應(yīng)用,既要兼顧運行效率又要兼顧靈活性。如果未來,混合應(yīng)用能夠做到在運行效率上越來越接近原生應(yīng)用,那么混合應(yīng)用一定會發(fā)展的越來越好。未來應(yīng)該是一個人人可編程的社會,未來的編程語言也應(yīng)該是從復(fù)雜到簡化的過程。為了實現(xiàn)這一目標,混合移動應(yīng)用的發(fā)展壯大是可以預(yù)見的。
幾個列子:
支付寶每年雙11活動都會在首頁給出活動展示,而我們又沒有重裝應(yīng)用,說明支付寶的首頁應(yīng)該就是使用網(wǎng)頁來實現(xiàn)的,但是可以肯定的是,他的支付流程,指紋驗證等環(huán)節(jié)肯定是原生代碼寫的,因為這樣可以提高安全性,不至于頁面被篡改而引起安全性問題。
滴滴前一段時間出的順風車事件,導(dǎo)致順風車功能被滴滴下架。這樣一個突發(fā)的事情,我們并沒有重新安裝滴滴應(yīng)用才可以不能使用滴滴順風車業(yè)務(wù),而是點進去就會彈出提示,滴滴順風車業(yè)務(wù)已經(jīng)無限期下線,說明這個頁面也是網(wǎng)頁做出來的。
這兩個例子突出說明了混合移動開發(fā)的靈活性。