關(guān)于HTML5應(yīng)用現(xiàn)狀前景的思考
現(xiàn)在的 HTML5 就像當(dāng)年嶄露頭角時(shí)的 Ajax,有人在做,但不知道叫它什么。最近,蘋(píng)果在 HTML5 上大做文章,而著名的 Web 設(shè)計(jì)師 Eric Meyer 則提出了 Web Stacks 的概念。Alex Kessinger 是 Yahoo 的一名前端工程師,本文是他對(duì) HTML5 應(yīng)用現(xiàn)狀與前景的思考。
術(shù)語(yǔ)
首先說(shuō)說(shuō) HTML5 應(yīng)用中的幾個(gè)定義。
HTML5
HTML5 最好的定義來(lái)自 Mark Pilgrim 的 Dive Into HTML5:
"HTML5 是繼 HTML4.01,XHTML 1.0/1.1 之后的下一代 HTML"
值得一提的是,我們或許能看到 HTML6,然而按 Pilgrim 在 WHATWG 博客中的說(shuō)法,下一代 HTML 很可能去掉版本號(hào)這一概念。
應(yīng)用
來(lái)自 Wikipedia 的解釋?zhuān)?/p>
"應(yīng)用程序是計(jì)算機(jī)用來(lái)執(zhí)行特定任務(wù)的軟件"
HTML5 應(yīng)用
從用戶(hù)的角度,HTML5 應(yīng)用和其它的計(jì)算機(jī)應(yīng)用程序還不完全一樣,但已經(jīng)很接近。從開(kāi)發(fā)者的角度,HTML5 應(yīng)用是一些基于 HTML,JavaScript,CSS 的程序,它們使用開(kāi)放技術(shù),可以離線(xiàn)使用,可以取代諸如 Silverlight 及 Flash 等專(zhuān)用平臺(tái)的部分工作。或者說(shuō),多年來(lái),你用來(lái)創(chuàng)建 Web 頁(yè)面的東西,現(xiàn)在可以用來(lái)創(chuàng)建類(lèi)似桌面和智能手機(jī)程序的應(yīng)用。
開(kāi)源模式帶來(lái)轉(zhuǎn)變
O’Reilly 創(chuàng)始人,Tim O’Reilly,一位開(kāi)源的支持者,曾在《Open Source Paradigm Shift》中如是說(shuō):
"IBM 對(duì)個(gè)人電腦設(shè)計(jì)的商品化使利潤(rùn)從硬件轉(zhuǎn)移到軟件這一層面,而開(kāi)源將帶來(lái)新的財(cái)富"
價(jià)值在不同的層面轉(zhuǎn)移,HTML5 將成為新的層面,商品的價(jià)值在下降,現(xiàn)時(shí)的瀏覽器已經(jīng)成為商品,但這并沒(méi)有問(wèn)題,只要它們都遵守標(biāo)準(zhǔn)。人們說(shuō),我們可以將操作系統(tǒng)置入瀏覽器中,但這行不 通,如果我們可以從過(guò)去的經(jīng)歷中學(xué)到些什么,那就是,不能簡(jiǎn)單照抄過(guò)去的模式,好比廣播到電視的變遷,你不能簡(jiǎn)單地在一個(gè)播音員面前放臺(tái)攝像機(jī)完事,將操 作系統(tǒng)置入瀏覽器未必比 HTML5 離線(xiàn)應(yīng)用本身更有價(jià)值。
發(fā)布渠道的重要
諸如 蘋(píng)果應(yīng)用商店,Android 應(yīng)用商店一類(lèi)的渠道將成為主導(dǎo),另外,一些新的',象 Valve 游戲渠道,Netflix 電影渠道一類(lèi)的東西將會(huì)出現(xiàn),在”云“時(shí)代,這些發(fā)布渠道將像桌面時(shí)代的操作系統(tǒng)一樣用來(lái)對(duì)用戶(hù)進(jìn)行組織和歸類(lèi)。
我們是如何到達(dá)現(xiàn)在這個(gè)階段的?
有兩個(gè)關(guān)鍵的因素。
感謝Web標(biāo)準(zhǔn)
盡管瀏覽器市場(chǎng)并不統(tǒng)一,但至少他們都運(yùn)行 HTML,JavaScript 和 CSS。當(dāng)我們希望通過(guò) Web 推出一些東西的時(shí)候,我們知道,無(wú)論如何,用戶(hù)都能看到,然而你能想象人們都自己定義 Web 時(shí)的情景嗎,假如有人不使用 HTTP協(xié)議,或者不使用 HTML,那才是世界的末日。W3C 一類(lèi)的組織讓各個(gè)瀏覽器廠(chǎng)家都保持同一個(gè)方向。
還好,我們并沒(méi)有很多渲染引擎
瀏覽器并不好做,數(shù)十億的網(wǎng)頁(yè),參差不齊的代碼,這些東西讓獨(dú)立開(kāi)發(fā)者沒(méi)有機(jī)會(huì)單獨(dú)設(shè)計(jì)瀏覽器,因此,有能力設(shè)計(jì)瀏覽器的始終是那么一小撮廠(chǎng)商,事 實(shí)上,時(shí)至今日,我們只有四種主要的瀏覽器渲染引擎,Trident (IE), Gecko (Mozilla, Firefox), WebKit (Chrome, Safari), 以及 Presto (Opera),而眾多瀏覽器都是建立在這些渲染引擎之上的。這意味著,不管在什么樣的設(shè)備上,我們不用太擔(dān)心它使用什么樣的瀏覽器,不管什么設(shè)備,只要 它有一個(gè)瀏覽器,就有一個(gè)可以運(yùn)行 HTML5 的環(huán)境。
標(biāo)準(zhǔn)何日面世?
關(guān)于 HTML5 成為標(biāo)準(zhǔn)的時(shí)間,Ian Hixie 的說(shuō)法最受認(rèn)可:
"根據(jù)估計(jì),HTML5 直到 2022 年才會(huì)形成 W3C 推薦標(biāo)準(zhǔn)"
然而,雖然標(biāo)準(zhǔn)的形成尚待時(shí)日,但瀏覽器廠(chǎng)商已經(jīng)在實(shí)現(xiàn)各種 HTML5 功能。
功能探測(cè)VS瀏覽器探測(cè)
如果你是開(kāi)發(fā)者,你可以使用那些高級(jí)功能,但需要進(jìn)行功能探測(cè)并提供漸進(jìn)式設(shè)計(jì)。坊間有大量的功能探測(cè)庫(kù),如 Modernizer ,另外,Mark Pilgrim 有一個(gè)清單,它可以讓你探測(cè)任何功能。
離線(xiàn)API
離線(xiàn) API 是一切 HTML5 應(yīng)用的基礎(chǔ),不單單是離線(xiàn)數(shù)據(jù)的事,對(duì)開(kāi)發(fā)者來(lái)說(shuō),擁有本地存儲(chǔ)(localStorage) 自然很好,但如何讓程序完全離線(xiàn)運(yùn)行?Application Cache 是答案。如果不能離線(xiàn)保存源文件和數(shù)據(jù),我們就無(wú)法實(shí)現(xiàn)離線(xiàn)的 HTML5 應(yīng)用。
我們目前有幾種離線(xiàn)存儲(chǔ)機(jī)制,簡(jiǎn)單的如 localStorage 和 SQL 存儲(chǔ)引擎,已經(jīng)有一些瀏覽器在支持了,而最新的明星是 Indexed Database,它得到了所有主 流瀏覽器支持。這些離線(xiàn)保存應(yīng)用和數(shù)據(jù)的能力,是 HTML5 的基礎(chǔ),目前,Webkit,F(xiàn)irefox 已經(jīng)可以實(shí)現(xiàn),而 IE9 也即將實(shí)現(xiàn)。即時(shí) IE9 的支持還需要等待,想一下,最需要離線(xiàn)應(yīng)用的場(chǎng)合是哪里,自然是智能手機(jī)和上網(wǎng)本,智能手機(jī)多數(shù)都是用 Webkit。
W3C Web 應(yīng)用工作組:HTML5 應(yīng)用的下一步
W3C WebApps 標(biāo)準(zhǔn)已經(jīng)做了大量工作,包括 API 及 HTML5 Web 程序細(xì)則。
HTML5 應(yīng)用的打包部署
HTML5 apps – QuirksBlog 博客文章中說(shuō),"對(duì)于本地/離線(xiàn) HTML5 應(yīng)用,W3C Widget packaging and configuration 是首選機(jī)制,并將成為事實(shí)標(biāo)準(zhǔn),很多廠(chǎng)商已經(jīng)開(kāi)始對(duì)之進(jìn)行實(shí)現(xiàn)。W3C Widgets 支持任意平臺(tái)的 Vodafone S60 和 Samsung 手機(jī), Opera 桌面與移動(dòng)瀏覽器,Bolt 瀏覽器 以及 Windows Mobile 6.5。BlackBerry 也支持,不過(guò)需要特殊的 Java 包。"
這些都是標(biāo)準(zhǔn),本質(zhì)上講,如果你有一個(gè) HTML5 應(yīng)用,它就會(huì)包含 HTML, CSS, 以及 JS,這些標(biāo)準(zhǔn)只不過(guò)偶是幫助開(kāi)發(fā)者將他們的程序打包發(fā)行,如果你熟悉 PEAR, 它們是很相似的概念。你可能需要一些元數(shù)據(jù),告訴系統(tǒng)你的程序是如何打包在一起的,在支持這些標(biāo)準(zhǔn)的平臺(tái)上,你就可以保證你的用戶(hù)可以順利運(yùn)行這些程序。
其它
HTML5 還有更多 API 可以幫助開(kāi)發(fā)者創(chuàng)建應(yīng)用,這些 API 可以讓你的程序訪(fǎng)問(wèn)諸如本地文件,攝像頭,SOCKET 通信服務(wù),以及硬件動(dòng)畫(huà)加速等。這些 API 僅僅是開(kāi)端,這樣的 API 后期會(huì)越來(lái)越多。
HTML5 程序可以應(yīng)用在哪里?
當(dāng)然是瀏覽器,如果一個(gè)設(shè)備擁有一個(gè)瀏覽器或渲染引擎,而且這個(gè)引擎是現(xiàn)代引擎,它就可以運(yùn)行 HTML5 程序。HTML5 程序會(huì)應(yīng)用在以下幾種場(chǎng)合。
桌面
如果你擁有一個(gè)符合 Web 標(biāo)準(zhǔn)的瀏覽器,就可以運(yùn)行 HTML5 應(yīng)用。桌面仍然很重要。
指定站點(diǎn)瀏覽器
諸如 Gmail 一類(lèi)的站點(diǎn)可以看做一個(gè)應(yīng)用,使用專(zhuān)門(mén)的瀏覽器運(yùn) 行,這樣的瀏覽器沒(méi)有地址欄,是專(zhuān)門(mén)用來(lái)運(yùn)行指定站點(diǎn)應(yīng)用的,甚至可以制作一個(gè)安裝包來(lái)分發(fā)。以下資源值得一看,Prism, Fluid/Fluidium 以及 NativeHost。
移動(dòng)領(lǐng)域
這是 HTML5 最熱門(mén)的運(yùn)行場(chǎng)所。iPhone 可以和很多程序集成,將你的程序顯示在它的今日桌面(這里有一個(gè)教程),Android 也支持需要的 HTML5 API,但集成不夠好。未來(lái)幾年,支持 HTML5 的移動(dòng)瀏覽器將如雨后春筍,將你的應(yīng)用向 HTML5 遷移是很明智的,因?yàn)?HTML5 將很好地運(yùn)行在這些設(shè)備上。
跨界領(lǐng)域
已經(jīng)有公司即將發(fā)布電視平臺(tái),Google TV 以及 Apple TV,Google 表示,他們的 TV 平臺(tái)將支持 HTML5,我們不知道蘋(píng)果的 TV 平臺(tái)將支持什么,鑒于他們最近對(duì) HTML5 的一系列炒作,很有可能也支持。另外 一些電視盒廠(chǎng)商,如 Boxee 業(yè)已開(kāi)始支持 HTML5,如果你想為 Boxee 開(kāi)發(fā)應(yīng)用,與其專(zhuān)門(mén)為它開(kāi)發(fā),不如直接使用 HTML5。
跨界領(lǐng)域擁有大量的平臺(tái),那些可以連接電腦的電視的數(shù)量在不斷增長(zhǎng),我們已經(jīng)可以在電視上全屏觀(guān)看 YouTube,而備受歡迎的 Wii 則內(nèi)置了 Opera。所有這些,都將借助 HTML,CSS 與 JavaScript。
HTML5 應(yīng)用商店
Eric Meyer 講到了 HTML5 應(yīng)用程序問(wèn)題,他將 HTML5 應(yīng)用成為 Web Stack Apps, HTML5 要獲得更多關(guān)注,可以建立 HTML5 應(yīng)用商店。Chrome 正在這樣做,而 Palm 已經(jīng)有了一個(gè)這樣的東西。
應(yīng)用商店是很好的東西,開(kāi)發(fā)者可以直接得到報(bào)酬,而無(wú)需像現(xiàn)在這樣靠廣告維持,同時(shí),用戶(hù)也將有一個(gè)地方去為他們的設(shè)備尋找程序。
HTML5市場(chǎng)前景
HTML5 在快速成長(zhǎng),值得所有人密切關(guān)注,最近的一兩年,會(huì)有很多公司進(jìn)入這個(gè)領(lǐng)域,我們或許會(huì)在 Chrome 應(yīng)用商店看到一些重量級(jí)廠(chǎng)商,我們也有希望在 Google TV 和 Apple TV 領(lǐng)域看到一些應(yīng)用商店的出現(xiàn)。HTML5 會(huì)像傳統(tǒng)的 Flash,F(xiàn)lex,Silverlight,Objective-C 那樣,形成自己的生態(tài)系統(tǒng)。HTML5 將比 Flash, Flex, Silverlight 以及 Objective-C 更容易出現(xiàn)在任何設(shè)備。
對(duì)于年輕一代開(kāi)發(fā)者,HTML5 應(yīng)當(dāng)是他們首選技能,HTML5 會(huì)形成很大的市場(chǎng),很有很多公司需要這方面的人才。
原文作者
Alex Kessinger 是一名 Yahoo 前端工程師,他的博客地址是alexkessinger.net, 他還是tastestalkr.com的合伙創(chuàng)始人,現(xiàn)居舊金山灣區(qū)。
【關(guān)于HTML5應(yīng)用現(xiàn)狀前景的思考】相關(guān)文章:
1.HTML5開(kāi)發(fā)移動(dòng)應(yīng)用的特性有哪些
4.四種HTML5移動(dòng)應(yīng)用框架的比較