自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hybrid App五大誤區(qū):不要為了HTML5而Hybrid

移動(dòng)開(kāi)發(fā)
Hybrid App,一種開(kāi)發(fā)模式,兼顧Web和Native的一種開(kāi)發(fā)模式。有人說(shuō)它把Web App扼殺在搖籃里,有人說(shuō)它把Native App引向一個(gè)新階段。我說(shuō),它是一把雙刃劍,千萬(wàn)別闖進(jìn)它的誤區(qū)。本文是筆者在實(shí)踐Hybrid App開(kāi)發(fā)模式過(guò)程中總結(jié)出的一些經(jīng)驗(yàn)教訓(xùn),供讀者參考。Hybrid App雖好,可萬(wàn)萬(wàn)不能倉(cāng)促選擇,盲目運(yùn)用。

Hybrid App,一種開(kāi)發(fā)模式,兼顧Web和Native的一種開(kāi)發(fā)模式。有人說(shuō)它把Web App扼殺在搖籃里,有人說(shuō)它把Native App引向一個(gè)新階段。我說(shuō),它是一把雙刃劍,千萬(wàn)別闖進(jìn)它的誤區(qū)。本文是筆者在實(shí)踐Hybrid App開(kāi)發(fā)模式過(guò)程中總結(jié)出的一些經(jīng)驗(yàn)教訓(xùn),供讀者參考。Hybrid App雖好,可萬(wàn)萬(wàn)不能倉(cāng)促選擇,盲目運(yùn)用。

智能手機(jī)日益普及,移動(dòng)互聯(lián)網(wǎng)亂戰(zhàn)日趨白熱化,開(kāi)發(fā)一個(gè)應(yīng)用早就不是技術(shù)圈熱議的話題,iOS和Android上的App已經(jīng)成了每個(gè)互聯(lián)網(wǎng)產(chǎn)品的標(biāo)配。“唯快不破”也是中被移動(dòng)互聯(lián)網(wǎng)人尊為鐵律,快速迭代,高效開(kāi)發(fā),低成本上線是每一個(gè)App開(kāi)發(fā)團(tuán)隊(duì)追求的目標(biāo)。同時(shí),隨著HTML 5的不斷升溫和智能手機(jī)硬件性能的提高,Hybrid App的概念應(yīng)運(yùn)而生。這種“Native搭臺(tái),HTML 5唱戲”的Hybrid App開(kāi)發(fā)模式一時(shí)間受到各個(gè)開(kāi)發(fā)團(tuán)隊(duì)追捧,快速進(jìn)入了大量開(kāi)發(fā)團(tuán)隊(duì),成為主流開(kāi)發(fā)模式。

Hybrid App優(yōu)點(diǎn)眾多,Web前端工程師0成本介入,不依賴(lài)版本的實(shí)時(shí)更新,快速實(shí)現(xiàn)跨平臺(tái)需求,等等。而另一個(gè)方面,2012年Hybrid App的踐行者Facebook決定大量棄用App中的HTML頁(yè)面,轉(zhuǎn)向更加Native化的方案。Facebook的這一舉措也給Hybrid App方案的敲響了警鐘,這似乎并不是一個(gè)完美的方案。

本文主要跟大家分享一下我團(tuán)隊(duì)和個(gè)人在Hybrid App的實(shí)踐中遇到的問(wèn)題,提醒大家不要闖進(jìn)Hybrid App的誤區(qū)。

誤區(qū)一:為了HTML 5Hybrid App

HTML 5在Hybrid App模式中是一個(gè)最常被提起的概念。HTML 5作為一個(gè)HTML 4.0.1和XHTML 1.0的升級(jí)版,基于舊版本有更強(qiáng)大的表現(xiàn)功能,并加入了Local Storage等技術(shù),確實(shí)為Web頁(yè)面提供了更大的想象空間和更多的可能性。但HTML 5處在目前的發(fā)展階段,受到瀏覽器兼容性和手機(jī)硬件性能水平的影響,它所能提供的功能與Native仍然有很大差距。

所以,我認(rèn)為作為工程師要明確一款A(yù)pp采用Hybrid App模式的根本原因是什么。作為一款A(yù)pp其最根本的功能是滿(mǎn)足使用者的需求,而并不是服務(wù)某項(xiàng)新技術(shù)。因此當(dāng)決定采用Hybrid App去構(gòu)建一款應(yīng)用時(shí),應(yīng)該從應(yīng)用本身功能特點(diǎn)和整個(gè)團(tuán)隊(duì)的開(kāi)發(fā)資源配比統(tǒng)一考慮,是否有必要同時(shí)又有能力去駕馭一款“Native搭臺(tái),HTML唱戲”的Hybrid App。類(lèi)似“HTML 5的時(shí)代已經(jīng)到來(lái),如果我們不這么做就變土鱉了,錯(cuò)過(guò)這場(chǎng)技術(shù)革新的大潮,終將被這個(gè)時(shí)代所淘汰”的話真不是一個(gè)有責(zé)任心的工程師應(yīng)該發(fā)出的聲音。

誤區(qū)二:忽略關(guān)鍵因素

在談到Hybrid App的場(chǎng)合我們更多提及的是它有諸多優(yōu)點(diǎn),如何架構(gòu)一個(gè)Hybrid App,怎么讓W(xué)eb和Native和諧共處,然而Web開(kāi)發(fā)中會(huì)被忽略的一些因素少被提起,這些因素又恰恰經(jīng)常是一個(gè)Web頁(yè)面能否正常運(yùn)行在App中的決定性因素。

Web開(kāi)發(fā)是基于PC的一種開(kāi)發(fā)模式,開(kāi)發(fā)者使用PC瀏覽器模擬App中的Web View進(jìn)行調(diào)試。PC瀏覽器與手機(jī)Web View的區(qū)別是巨大的,能支配的CPU資源,最大占有的內(nèi)存,運(yùn)行的網(wǎng)絡(luò)環(huán)境,鼠標(biāo)操作與觸控操作的區(qū)別,瀏覽器對(duì)CSS/JS的解析和對(duì)事件處理,等 等。

App工程師,無(wú)論是iOS還是Android,最敏感的一個(gè)問(wèn)題莫過(guò)于內(nèi)存管理,而在Web開(kāi)發(fā)則對(duì)這個(gè)問(wèn)題沒(méi)有過(guò)多注意。這就經(jīng)常導(dǎo)致同一個(gè)功 能界面Native實(shí)現(xiàn)中會(huì)通過(guò)一些技術(shù)手段,把內(nèi)存容量控制在操作系統(tǒng)允許的范圍內(nèi)保證App正常運(yùn)行。如果以Web方式接入App的頁(yè)面沒(méi)有一個(gè)明確 的標(biāo)準(zhǔn)和嚴(yán)格的驗(yàn)收機(jī)制,相應(yīng)的Web實(shí)現(xiàn)則不會(huì)過(guò)多考慮這方面的問(wèn)題,而且瀏覽器也沒(méi)有給前端工程師提供足夠的Api支持處理內(nèi)存問(wèn)題,導(dǎo)致在某些條件 下造成App無(wú)法正常運(yùn)行,甚至Crash。

同樣的問(wèn)題會(huì)出現(xiàn)在網(wǎng)絡(luò)環(huán)境方面,雖然現(xiàn)在wifi覆蓋越來(lái)越廣,3G網(wǎng)絡(luò)也日益普及,但App運(yùn)行的網(wǎng)絡(luò)環(huán)境與PC相比仍然有著巨大差 距,wifi和蜂窩網(wǎng)絡(luò)的切換,基站變化等諸多因素都會(huì)導(dǎo)致網(wǎng)絡(luò)間歇性斷開(kāi)。Web開(kāi)發(fā)總是默認(rèn)有一個(gè)穩(wěn)定的網(wǎng)絡(luò)環(huán)境,因此在對(duì)于不穩(wěn)定網(wǎng)絡(luò)環(huán)境問(wèn)題的處 理上也有所欠缺。沒(méi)有明確的對(duì)于低速網(wǎng)絡(luò)或不穩(wěn)定網(wǎng)絡(luò)訪問(wèn)的處理,在很多情況下這些頁(yè)面也會(huì)非常不給面子。

誤區(qū)三:富交互導(dǎo)致體驗(yàn)差

這里所謂的體驗(yàn)問(wèn)題一分為二:一是與手機(jī)平臺(tái)默認(rèn)交互習(xí)慣不一致的體驗(yàn),二是與同樣功能Native界面存在的體驗(yàn)差距。

無(wú)論在Android還是iOS平臺(tái)上,都有各自的一套交互習(xí)慣,包括視覺(jué)風(fēng)格,界面切換,操作習(xí)慣等,與Web習(xí)慣完全不同。如果使用Web方式開(kāi)發(fā)富交互的頁(yè)面,或多頁(yè)面功能就會(huì)出現(xiàn)這樣的問(wèn)題。

以iOS界面切換為例,系統(tǒng)風(fēng)格是新界面自右向左推入,后退時(shí)界面自左向右推出,而舊界面保持狀態(tài)。Web開(kāi)發(fā)的默認(rèn)習(xí)慣則是刷新頁(yè)面,無(wú)論新載入 頁(yè)面或是后退,都會(huì)對(duì)頁(yè)面進(jìn)行刷新。因此使用Web模式開(kāi)發(fā)多界面功能就面臨這樣的交互習(xí)慣差異,造成體驗(yàn)上的損失。當(dāng)然Web方式也可模擬Native 的交互方式,但這樣的模擬首先提高了開(kāi)發(fā)成本,有悖于最初的高效原則,從效果上看,也很難達(dá)到Native的流暢性。

另一個(gè)方面,也是上述提到的與Native相比,同樣的功能在性能上存在巨大差距。Web界面上JS對(duì)HTML Node的操作需要消耗大量的CPU資源,手機(jī)CPU的性能還不能與PC相提并論,就算在智能手機(jī)之間,硬件水準(zhǔn)也參差不齊,一個(gè)可以在iPhone 5上流暢運(yùn)行的界面,跑到三星S III上很可能就卡住不動(dòng)了。所以我們經(jīng)常可以發(fā)現(xiàn)一些富交互頁(yè)面上的操作無(wú)法達(dá)到令人滿(mǎn)意的流暢度,而流暢度也正是用戶(hù)評(píng)價(jià)一款A(yù)pp優(yōu)劣的最直觀因 素。

誤區(qū)四:跨平臺(tái)

一次開(kāi)發(fā),跨平臺(tái)運(yùn)行是Web的優(yōu)勢(shì),這也是很多App采用Hybrid模式的重要原因之一。兼容性問(wèn)題在Web開(kāi)發(fā)過(guò)程中往往不被關(guān)注,但當(dāng)下智能手機(jī)的軟硬件版本眾多,兼容性絕對(duì)是一個(gè)不容忽視的問(wèn)題。

以Android手機(jī)為例,諸多主流品牌都有各自定制過(guò)的操作系統(tǒng),瀏覽器內(nèi)核對(duì)JS和CSS的解析,事件處理等方面都存在區(qū)別。以HTC One為例重疊在一起的層在某些情況下會(huì)對(duì)點(diǎn)擊事件透?jìng)?,而其他多?shù)平臺(tái)則不存在這個(gè)問(wèn)題。并且目前移動(dòng)平臺(tái)的開(kāi)發(fā)框架還沒(méi)有完全成熟,可以很好的解決兼 容性問(wèn)題。所以就要求開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中要對(duì)兼容性做充分測(cè)試,對(duì)于某些特殊版本進(jìn)行特殊處理。

即使在相對(duì)統(tǒng)一的iOS平臺(tái),不同版本之間也存在較大差異。例如:在iOS 4.x版本中CSS甚至不支持position fix的屬性,4英寸屏幕的設(shè)備無(wú)法很好的支持apple-mobile-web-app-capable屬性,等等。

誤區(qū)五:交互一致性。

交互一致性是一個(gè)非常容易被誤讀的概念,“一致性”經(jīng)常被理解為同一個(gè)應(yīng)用在各種平臺(tái)和場(chǎng)景下要有一致性的體驗(yàn)。我認(rèn)為在移動(dòng)平臺(tái)開(kāi)發(fā)過(guò)程中,“一 致性”應(yīng)該是App視覺(jué)和交互習(xí)慣與其運(yùn)行平臺(tái)的習(xí)慣保持一致。而Web開(kāi)發(fā)“一次開(kāi)發(fā),跨平臺(tái)運(yùn)行”的特性與此存在一定程度上的沖突。

以“返回上一頁(yè)面”的操作為例,在iOS平臺(tái)上在頁(yè)面頂部始終存在一個(gè)44像素高的導(dǎo)航欄,左側(cè)有一個(gè)返回按鈕用于返回操作,而Android平臺(tái) 則習(xí)慣使用設(shè)備提供的返回鍵操作。這個(gè)返回按鈕在iOS平臺(tái)可以通過(guò)絕對(duì)地址的方式連接到任何其他頁(yè)面,而在Android平臺(tái)返回按鈕和設(shè)備的返回鍵則 可能指向不同的位置。

例如這樣的一個(gè)流程:首頁(yè)->列表->篩選->刷新過(guò)的列表,此時(shí)的返回操作被期望是導(dǎo)向首頁(yè),則頁(yè)面上的返回按鈕可以通過(guò)絕對(duì)鏈接的方式實(shí)現(xiàn),而Android設(shè)備的返回鍵則只能返回上一個(gè)篩選頁(yè)面,再次返回是篩選前的列表頁(yè)。

Hybrid App方案是一把雙刃劍,一方面它平衡了Native App和Web頁(yè)面的優(yōu)缺點(diǎn),一定程度上解決了Native App開(kāi)發(fā)過(guò)程中迭代慢,版本依賴(lài),Native開(kāi)發(fā)資源不足的問(wèn)題,但另一個(gè)方面過(guò)度依賴(lài)Hybrid方案會(huì)造成Web前端開(kāi)發(fā)成本快速上升,甚至造成 App整體體驗(yàn)下降,甚至造成功能缺失。

不要為了Hybrid而Hybrid,控制好方案中Native與Web的邊界。

擴(kuò)展閱讀

較早Mobtest針對(duì)Facebook的iOS App專(zhuān)門(mén)做的一片評(píng)測(cè)文章,闡述了使用大量HTML頁(yè)面的App出現(xiàn)的問(wèn)題:http://blog.mobtest.com/2012/05/heres-why-the-Facebook-ios-app-is-so-bad-uiwebviews-and-no-nitro/

資深開(kāi)發(fā)者@李秉駿 在InfoQ發(fā)表的《Hybrid App實(shí)戰(zhàn)》,闡述了Hybrid模式的優(yōu)勢(shì)與劣勢(shì),并簡(jiǎn)單介紹了開(kāi)發(fā)Hybrid App所需的技術(shù)儲(chǔ)備,供讀者參考。:http://www.infoq.com/cn/articles/hybrid-app-development-combat

資深開(kāi)發(fā)者@唐巧 較早對(duì)Hybrid App主流框架PhoneGap的分析文章,筆者非常同意對(duì)PhoneGap框架的態(tài)度,PhoneGap雖好,可不要貪杯 喲:http://blog.devtang.com/blog/2012/03/24/talk-about-uiwebview-and- phonegap/

責(zé)任編輯:徐川 來(lái)源: infoq
相關(guān)推薦

2012-05-28 14:13:26

HTML5Web AppNative App

2012-05-30 09:22:56

Hybrid App助HTML5JavaScript

2012-06-05 09:06:52

HTML5Native AppHybrid App

2013-10-09 09:10:28

移動(dòng)應(yīng)用開(kāi)發(fā)NativeHybrid

2013-05-29 13:28:06

移動(dòng)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用移動(dòng)中間件

2012-08-17 10:22:26

HTML5性能瀏覽器

2020-10-13 14:52:48

物聯(lián)網(wǎng)

2014-12-17 10:43:01

Hybrid App平臺(tái)開(kāi)發(fā)

2014-05-21 15:13:40

AppCanHybrid

2020-08-16 08:25:46

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2014-11-28 10:31:07

Hybrid APP

2014-12-18 13:40:16

Web AppHybrid AppNative App

2019-04-01 06:23:54

MPLS網(wǎng)絡(luò)廣域網(wǎng)

2014-12-17 10:29:59

混合應(yīng)用Hybrid App開(kāi)發(fā)實(shí)戰(zhàn)

2009-08-21 19:16:45

刀片服務(wù)器綜合布線

2009-03-24 10:09:58

SaaS誤區(qū)調(diào)查

2011-10-11 10:04:58

VMware View虛擬化

2014-12-17 14:21:56

Hybrid App框架工具

2014-12-17 11:09:39

Hybrid AppWebView裝載頁(yè)面

2013-03-19 09:08:42

Hybrid App
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)