主要 前端框架?和打包平臺(tái)、工具
Web App(網(wǎng)頁(yè)應(yīng)用)
????????????使用的主要前端框架 jQuery Mobile 、amazeui??ThinkPHP Mobile 、 mui框架
????????????打包工具:cordova? phonegap?
Hybrid App(混合應(yīng)用)
????????????使用的主要前端框架:mui框架??Vue.js?React.js?Ionic 即Angularjs開發(fā)生態(tài)
????????????打包工具 Hbuilder、Appcan、Wex5、Apicloud
Native App(原生應(yīng)用)
????????????框架:ios 安卓開發(fā)語(yǔ)言
????????????開發(fā)工具:Xcode、Eclipse-ADT/Android Studio
各自特點(diǎn)區(qū)別
Web app:
主要使用H5(html5、css3、js)語(yǔ)言規(guī)范來(lái)編寫,對(duì)JS語(yǔ)言掌握要求較高 。將 APP僅僅作為一個(gè)瀏覽器使用,里面跑在線或者離線的HTML代碼,H5代碼占比超過90%。
Web app的主要工作量在于寫一個(gè)兼容性好的H5頁(yè)面,包括分辨率、性能、瀏覽器支持等問題。如果對(duì)于分別多平臺(tái)(不光iOS、Android,可能還有移動(dòng)網(wǎng)頁(yè)版和微信公眾平臺(tái))做Native應(yīng)用來(lái)說(shuō),肯定總成本是低的。
好處是如果能一套H5代碼搞定多平臺(tái)的話相當(dāng)省時(shí)省力。如果H5代碼寫的好的話,其實(shí)在主流機(jī)型上的適配和體驗(yàn)也都過得去。
這個(gè)方案的缺點(diǎn)也很明顯,在低配機(jī)上性能很差,如果H5代碼寫的不好,兼容性問題一堆,功能、安全性也受到很大的限制。
Hybridapp:
同Webapp使用H5作為主要編程語(yǔ)言,JS將作為主力連接原生SDK模塊,應(yīng)用中包含了Native代碼(就是原生代碼),并且實(shí)現(xiàn)了部分H5體驗(yàn)不好、或者難以實(shí)現(xiàn)的邏輯(比如定位、埋點(diǎn)、本地持久存儲(chǔ)、體感等)。有些情況下,程序的底層框架、核心邏輯、界面框架也會(huì)用Native來(lái)完成,H5只用來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,H5代碼占比在40%~80%左右。
上手難度、開發(fā)周期、跨平臺(tái)屬性
上手難度:
Hybridapp/Webapp:寫一次,運(yùn)行任何平臺(tái)。簡(jiǎn)單
React-Native:學(xué)一次,寫任何平臺(tái)。中等
Nativeapp:學(xué)一次,只限運(yùn)行特定平臺(tái)。較難
開發(fā)周期:
Webapp:2~3周
Hybridapp:由于第三方工具兼容性、bug處理問題、調(diào)用js-原生模塊(熟悉文檔),開發(fā)周期在2個(gè)月左右
React-Native:1個(gè)半月~2個(gè)月
Nativeapp:各1個(gè)半月~2個(gè)月
跨平臺(tái)屬性:
Webapp:支持多平臺(tái)
Hybridapp:跨iOS、Android、Wp(PhoneGap支持)多平臺(tái)
React-Native:跨iOS、Android雙平臺(tái)
Nativeapp:不跨平臺(tái)
Hybrid app與Native app(就是原生APP)相比
1)混合式app的用戶體驗(yàn)
頁(yè)面與頁(yè)面之間的切換,也稱轉(zhuǎn)場(chǎng)動(dòng)畫。隨著手機(jī)硬件系統(tǒng)的更新?lián)Q代,webview已有很大程度的提升,但即使是在iphone 6/6s plus上仍然是假性生硬切換,即使無(wú)卡頓。那么要做到諸如微信般切換已然無(wú)可能。
iOS系統(tǒng)如此,安卓系統(tǒng)情況亦不明朗。而由于混合式app依賴模塊實(shí)現(xiàn)原生交互,在沒有大量模塊實(shí)現(xiàn)的情況下,需要使用html5-js來(lái)代替,體驗(yàn)更是大打折扣。
2)UI開發(fā)受限
許多創(chuàng)業(yè)公司由于產(chǎn)品交互需求,需要將app ui做到配色一致或更個(gè)性化(如帶卡通下拉刷新),而混合式app的模塊UI已寫固定,自由化UI定制難。
3)集成第三方sdk
Hybrid app想要使用第三方sdk,首先要使用的工具平臺(tái)支持,如果平臺(tái)不支持,要么你請(qǐng)人寫iOS/android模塊,要么就是等。倘若新集成的sdk出現(xiàn)bug,你所能做的也是等,并沒有其他好的辦法。