Web App三大挑戰(zhàn):瀏覽器性能不足是最大障礙
究竟什么是Web App?
很多人從Web App字面上理解就是運(yùn)行在網(wǎng)頁上的應(yīng)用。可普通用戶很難理解:應(yīng)用是App,網(wǎng)頁是web,兩個(gè)不同的東西是怎么結(jié)合呢?另外,綜合當(dāng)前的軟件和硬件環(huán)境來看,顯然不是所有的應(yīng)用都能跑在網(wǎng)頁上的。還有,應(yīng)用要有應(yīng)用的“樣子”,WebApp和普通的網(wǎng)頁從UI和UE的層面也有比較大的差別……這種種的區(qū)別和不解造成的疑惑讓很多人認(rèn)為WebApp就是更像應(yīng)用的WAP。那到底什么是WebApp?維基百科上WebApp的定義是:
“A web application is an application that is accessed over a network such as the Internet or an intranet [1]. The term may also mean a computer software application that is coded in a browser-supported language (such as JavaScript, combined with a browser-rendered markup language like HTML) and reliant on a common web browser to render the application executable.” |
我們來拆分一下這里面的幾層含義:
- Application:應(yīng)用,為用戶完成一個(gè)或多個(gè)功能而設(shè)計(jì)的程序;
- Internetor Intranet:運(yùn)行于廣域網(wǎng)或局域網(wǎng)之上;
- Browser-supported language:使用瀏覽器支持的語言;
- Web browser:運(yùn)行于標(biāo)準(zhǔn)的瀏覽器解析引擎上。
移動(dòng)端WebApp和WAP有什么不同?最直接的區(qū)別就是功能層面。WAP更側(cè)重使用網(wǎng)頁技術(shù)在移動(dòng)端做展示,包括文字、媒體文件等。而WebApp更側(cè)重“功能”,是使用網(wǎng)頁技術(shù)實(shí)現(xiàn)的App??偟膩碚f,WebApp就是運(yùn)行于網(wǎng)絡(luò)和標(biāo)準(zhǔn)瀏覽器上,基于網(wǎng)頁技術(shù)開發(fā)實(shí)現(xiàn)特定功能的應(yīng)用。
Web App有眾多的優(yōu)點(diǎn)
第一、使用W3C標(biāo)準(zhǔn)的HTML語言開發(fā),能夠輕松實(shí)現(xiàn)跨平臺(tái),移動(dòng)應(yīng)用開發(fā)者不再需要考慮復(fù)雜的底層適配和跨平臺(tái)開發(fā)語言的問題。與此同時(shí),使用HTML來開發(fā)的Web App在投入上會(huì)大大的低于傳統(tǒng)的Native App。

第二、基于當(dāng)下開始普及流行的HTML5,Web App可以實(shí)現(xiàn)很多原本Native App才可以實(shí)現(xiàn)的功能,比如LBS的功能、本地?cái)?shù)據(jù)存儲(chǔ)、音視頻播放的功能,甚至調(diào)用照相機(jī)和結(jié)合GPU的硬件加速功能。
第三,移動(dòng)應(yīng)用的迭代周期平均不到1個(gè)月,用戶需要不停的重新下載與升級(jí)。而WebApp則無需用戶下載,并且和傳統(tǒng)網(wǎng)站一樣可以動(dòng)態(tài)升級(jí)。
第四,Web App有App的特性,更有Web的特性。每一個(gè)NativeApp在當(dāng)前的用戶使用場(chǎng)景下是相對(duì)孤立的,而WebApp則可以像傳統(tǒng)互聯(lián)網(wǎng)網(wǎng)頁那樣相互鏈接,從一個(gè)Web App直接跳轉(zhuǎn)到另外一個(gè)Web App。這無論是從用戶的使用體驗(yàn)層面還是從應(yīng)用之間的數(shù)據(jù)傳輸來看都是非常不錯(cuò)的選擇。
WebApp當(dāng)前也有很多的缺陷

首先是標(biāo)準(zhǔn)的規(guī)范尚未定案。
Web App的實(shí)現(xiàn)需要多個(gè)層面的標(biāo)準(zhǔn)配套,如WAC標(biāo)準(zhǔn)、Device API標(biāo)準(zhǔn)以及HTML5標(biāo)準(zhǔn)。在這些標(biāo)準(zhǔn)都尚未完善之前,Web App還無法實(shí)現(xiàn)Native App的常用功能,如攝像頭的調(diào)用。
其次,不同瀏覽器支持的差異性將成為長(zhǎng)久的問題。
在PC端Firefox、IE、Chrome等瀏覽器雖然都遵循HTML標(biāo)準(zhǔn),但最終展示效果仍舊會(huì)有偏差。在移動(dòng)端這種情況只會(huì)進(jìn)一步加劇。比如HTML5標(biāo)準(zhǔn)中對(duì)input的類型進(jìn)行了定義,其中包括時(shí)間型如type=datetime。不同的瀏覽器展示出來的最終效果千差萬別。另外CSS3的支持效果各個(gè)瀏覽器核心也會(huì)有自己的風(fēng)格,做不到完全統(tǒng)一。這和NativeApp相比,成為比較大的弱勢(shì)。
第三,最大的問題就是移動(dòng)設(shè)備瀏覽器的性能還不能支持與Native App體驗(yàn)媲美的Web App。
體驗(yàn)不流暢和響應(yīng)速度慢是Web App當(dāng)前面臨兩個(gè)最大的硬傷。目前Web App主要使用第三方的JS框架來完成開發(fā),其中國(guó)外比較知名的包括JQuery Mobile、Sencha Touch、JQMobi等。這些開發(fā)框架的比較統(tǒng)一的特色比如都是把代碼寫在一個(gè)網(wǎng)頁文件內(nèi),不同的界面通過不同的DIV切換來展示。這直接導(dǎo)致了Web App在界面切換過程中的不流暢。而這一問題必須隨著硬件的發(fā)展和軟件的優(yōu)化來逐漸的完善。根據(jù)分析從存量智能手機(jī)和新手機(jī)發(fā)展的狀況來看根本上解決這個(gè)問題可能還需要到2014年。
總結(jié)
Web App當(dāng)前在優(yōu)勢(shì)和缺陷都十分明顯的情況下,開發(fā)者該如何選擇?一方面是跨平臺(tái)和低成本開發(fā)的巨大吸引力,另一面是似乎還缺少實(shí)用性。國(guó)內(nèi)外開發(fā)者陷入到Native App VS Web App的巨大爭(zhēng)論中。正是在這樣的環(huán)境下,Hybrid App的概念被提出。這種兼具Native App和Web App的優(yōu)勢(shì)又能將兩者的缺陷最小化的移動(dòng)應(yīng)用開發(fā)模式成了一種全新的選擇。國(guó)內(nèi)外知名的Hybrid App移動(dòng)應(yīng)用開發(fā)框架有Phonegap、App mobi以及AppCan等。從2011年底開始這些移動(dòng)應(yīng)用開發(fā)框架逐漸進(jìn)入移動(dòng)應(yīng)用開發(fā)者的視野,面對(duì)這種全新的選擇,開發(fā)者還需要更深入的了解。雖然從學(xué)習(xí)到實(shí)用還需要一個(gè)過程,但是終究不用僅僅局限于Nativeor Web這種二選一的困惑中。Hybrid App正在悄無聲息的挑戰(zhàn)著Native App和Web App!
本文作者劉鑫,跨平臺(tái)及WebApp研究和踐行者