最早的App開發(fā)只有原生這個概念裆站,Html頁面只是用來做一些簡單的靜態(tài)資源展示条辟,但是隨著H5的興盛黔夭,大家發(fā)現(xiàn)很多功能宏胯、邏輯都可用web來實現(xiàn),然后原生作為容器顯示本姥,而且H5展示的頁面更炫酷肩袍、功能更豐富,在IOS婚惫、Andriod中都有很好的支持氛赐,這樣開發(fā)效率更高、成本更低先舷,同時用戶體驗也不錯艰管。目前市場上主流的APP主要分為三種:原生APP、WebAPP(HTML5)和混合APP三種蒋川,相對應(yīng)的開發(fā)模式就是:原生開發(fā)牲芋、H5開發(fā)和混合開發(fā),這里分別從三者的特點以及優(yōu)劣性詳細(xì)展開捺球,進(jìn)行對比分析缸浦。
三種主流APP
原生APP(NativeAPP)
原生APP就是利用Android、iOS平臺官方的開發(fā)語言氮兵、開發(fā)類庫裂逐、工具進(jìn)行開發(fā)。比如安卓的Java泣栈、Eclipse卜高、Android studio,iOS的Swift南片、Objective-C 和Xcode掺涛。原生App在應(yīng)用性能和交互體驗上應(yīng)該是最好的,該模式通常是由“云服務(wù)器數(shù)據(jù)+APP應(yīng)用客戶端”兩部份構(gòu)成铃绒,APP應(yīng)用所有的UI元素鸽照、數(shù)據(jù)內(nèi)容、邏輯框架均安裝在手機(jī)終端上颠悬。用戶只能通過App Store和應(yīng)用商店下載到矮燎,每一種移動操作系統(tǒng)都需要獨立的開發(fā)項目定血。一般用于開發(fā)純工具類App,無需頻繁更新的應(yīng)用程序诞外,例如微信客戶端澜沟、一些管理應(yīng)用。
優(yōu)點:
- 可訪問手機(jī)所有功能峡谊,擁有手機(jī)的各種功能的權(quán)限茫虽,調(diào)用原生設(shè)備,比如獲取個人信息既们,攝像頭以及重力加速器濒析、GPS等等;
- 功能齊全啥纸、運行速度快号杏、性能高、穩(wěn)定性強(qiáng)斯棒,是三種App中用戶體驗最好的盾致;
- 支持大量圖形和動畫,運行不卡頓荣暮,系統(tǒng)響應(yīng)速度快庭惜,流暢度好;
- 頁面布局穗酥、功能實現(xiàn)护赊、邏輯步驟都是用代碼實現(xiàn)的,與系統(tǒng)的兼容性好迷扇,安全性高百揭,閃退的現(xiàn)象少。
- 支持容易發(fā)現(xiàn)(在App Store里面)和重新發(fā)現(xiàn)(應(yīng)用圖標(biāo)會一直在手機(jī)主頁上)蜓席,用戶粘度高器一;
- 比較快捷地使用設(shè)備端提供的接口,處理速度上有優(yōu)勢厨内;
- 官方提供大量的開發(fā)工具和人工支持來幫助開發(fā)祈秕;
- 不需要瀏覽器直接下載獨立的應(yīng)用在設(shè)備上運行,安裝之后使用方便雏胃;
- 手機(jī)用戶無法聯(lián)網(wǎng)時也可以訪問APP應(yīng)用中以前加載好的數(shù)據(jù)
- 可以通過用戶下載應(yīng)用盈利(但App Store抽取20-30% 的營收)
缺點:
- 開發(fā)語言相對web前端學(xué)習(xí)難度大请毛,原生人員的入門門檻高,Android瞭亮,iOS都需要獨立學(xué)習(xí)方仿,Android基于Java語言,底層調(diào)用Google的 API;iOS基于OC或者Swift語言仙蚜,底層調(diào)用App官方提供的API此洲。
- 開發(fā)成本高、項目周期長委粉,需要配備兩個專門的開發(fā)人員呜师,對應(yīng)開發(fā)Android和IOS兩套獨立的代碼,不能跨平臺開發(fā)贾节,且支持的設(shè)備有限汁汗,可移植性差;
- App需要發(fā)布到應(yīng)用市場接受審核栗涂,內(nèi)容根據(jù)不同平臺的規(guī)定受到限制知牌,審核標(biāo)準(zhǔn)嚴(yán)格、周期長戴差,需要具備企業(yè)證書送爸。
- 應(yīng)用安裝包大,包含UI元素暖释、數(shù)據(jù)內(nèi)容、邏輯框架墨吓,占用用戶手機(jī)內(nèi)存資源球匕。
- APP應(yīng)用每次更新、維護(hù)帖烘,都要涉及到向各個應(yīng)用商店提交審核亮曹,上傳發(fā)布到應(yīng)用市場,用戶在App Store或者應(yīng)用市場里進(jìn)行更新秘症,重新下載安裝新的包照卦,必須等下載安裝完畢才可以打開使用,用戶可以對App進(jìn)行點評乡摹、投訴役耕。
Web版APP(HTML 5)
可以在手機(jī)端瀏覽器里面打開的網(wǎng)站就是Web App,是利用Web技術(shù)進(jìn)行的App開發(fā)聪廉,本質(zhì)就是瀏覽器功能的疊加瞬痘,用普通Web開發(fā)語言開發(fā)的,通過瀏覽器運行板熊。Web技術(shù)本身需要瀏覽器的支持才能進(jìn)行展示和用戶交互框全,因此主要用到的技術(shù)是HTML5、JavaScript干签、CSS等津辩。適合展示有大段文字、圖片排版,且樣式比較豐富的頁面喘沿,很多通過vue和react框架編寫的都是WebApp情萤。
優(yōu)勢:
- 開發(fā)成本低、周期短摹恨,只需要H5前端工程師開發(fā)一套代碼筋岛,就可以同時在Android、IOS晒哄、Windows等設(shè)備上運行睁宰,支持設(shè)備范圍廣,兼容多種設(shè)備寝凌,可以跨平臺開發(fā)柒傻,開發(fā)完成后可以即時上線,市面上有大量的開發(fā)框架可以幫助開發(fā)人員縮短開發(fā)周期和開發(fā)難度较木;
- 由于不用上架應(yīng)用市場红符,所以內(nèi)容沒有限制;
- 無需安裝App伐债,不會占用用戶手機(jī)內(nèi)存预侯,用戶直接通過瀏覽器即可訪問。這是它的優(yōu)點峰锁,同時也是它的缺點萎馅,用戶用完即走,留存率低虹蒋。
- 維護(hù)簡單糜芳,不需要用戶下載安裝,只需要瀏覽器的解析魄衅,通過瀏覽器可以直接訪問峭竣;
- 開發(fā)者更新僅需要通過服務(wù)器更新即可,用戶能夠直接使用最新版本號(自己主動更新晃虫,不需用戶手動更新)皆撩,對用戶來說是感覺不到更新操作的,實現(xiàn)了無痕更新(需要注意一下瀏覽器緩存的問題)傲茄。
缺點:
對網(wǎng)絡(luò)依賴性強(qiáng)毅访,一旦沒有網(wǎng)絡(luò)就無法進(jìn)行任何操作,耗費流量盘榨,網(wǎng)速慢的時候影響訪問速度喻粹;
由于Web技術(shù)本身的限制,可以使用的功能有限草巡,并不能直接訪問手機(jī)的所有功能守呜,很多權(quán)限受到限制型酥,比如攝像頭麥克風(fēng)、查乒、GPS弥喉,重力加速器、離線存儲等玛迄,所以在體驗和性能上有很大的局限性由境;
App運行速度慢,頁面不能承載太多東西蓖议,切換的時候流暢性較差虏杰;
和原生App相比,性能和用戶體驗都大打折扣勒虾,圖片和動畫支持性不高纺阔,穩(wěn)定性不強(qiáng);
如果用戶使用更多的新型瀏覽器修然,那么就會出現(xiàn)運行問題笛钝;
因為不通過App store下載,所以無法通過下載盈利愕宋。
混合APP(HybridAPP)
混合App是原生應(yīng)用和Web應(yīng)用的結(jié)合體玻靡,在開發(fā)的時候,不僅利用了原生APP的開發(fā)技術(shù)還應(yīng)用了HTML5開發(fā)技術(shù)掏婶,所以必須在部分在設(shè)備上執(zhí)行啃奴、部分在Web上執(zhí)行,二者混合比例不限雄妥。通俗點來說,這就是網(wǎng)頁的模式依溯,通常由“HTML5云網(wǎng)站+APP應(yīng)用客戶端”兩部份構(gòu)成老厌。
混合開發(fā)是一種取長補短的開發(fā)模式,原生代碼部分利用Web View插件或者其它框架為H5提供容器(Android中是webview,iOS7以下有UIWebview,7以上有WKWebview)黎炉,嵌套Html 5 頁面枝秤。程序主要的業(yè)務(wù)實現(xiàn)、界面展示都是利用與H5相關(guān)的Web技術(shù)進(jìn)行實現(xiàn)的慷嗜。
優(yōu)點:
- 開發(fā)效率高淀弹、周期短,一套代碼可以兼容Android庆械、IOS薇溃、普通webkit瀏覽器設(shè)備,可以跨平臺開發(fā)缭乘,可復(fù)用性非常高沐序;
- 可以在App Store下載,部分內(nèi)容可離線運行;
- 可以訪問手機(jī)的功能要比Web版App更多策幼,但是依然比不上原生的App邑时;
- 代碼更新和維護(hù)比較方便,版本升級的時候只需在服務(wù)端升級即可特姐,不需要上傳App Store審核晶丘;
缺點:
- 用戶體驗不如本地原生App應(yīng)用;
- 加載速度慢唐含,網(wǎng)絡(luò)要求高浅浮;
- 技術(shù)還不是很成熟,安全性較差觉壶。
總結(jié)
分析完了以上三種開發(fā)模式脑题,它們各有利弊,那么在實際開發(fā)中铜靶,我們到底應(yīng)該如何選擇叔遂?具體還是需要看團(tuán)隊的產(chǎn)品需求,綜合項目預(yù)算争剿,上線時間已艰,產(chǎn)品功能等幾個方面來考慮。
假如預(yù)算充足蚕苇,性能要求高哩掺,開發(fā)周期長,可以考慮用戶體驗比較好的原生App涩笤。
假如產(chǎn)品需要短時間內(nèi)上線嚼吞,兼容所有平臺,不追求用戶體驗和性能蹬碧,沒有離線訪問的需求舱禽,可以選擇Web App。
追求性能恩沽、體驗誊稚,同時追求開發(fā)效率,有部分功能需要調(diào)用攝影頭罗心、麥克風(fēng)里伯、GPS定位等手機(jī)原生功能,則推薦使用混合App渤闷。
混合App綜合了兩種App的優(yōu)點疾瓮,但是目前在性能上依舊有所欠缺,并不是說混合App就是最好解決方案肤晓。根據(jù)實際需要來做選擇是正確的做法爷贫,適合的才是最好的认然,當(dāng)然如果條件允許的話,原生加Web兩種版本一起開發(fā)更好漫萄。