現(xiàn)在的 HTML5 就像當(dāng)年嶄露頭角時(shí)的 Ajax,有人在做,但不知道叫它什么。最近,蘋果在 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 的解釋:
"應(yīng)用程序是計(jì)算機(jī)用來(lái)執(zhí)行特定任務(wù)的軟件"
HTML5 應(yīng)用
從用戶的角度,HTML5 應(yīng)用和其它的計(jì)算機(jī)應(yīng)用程序還不完全一樣,但已經(jīng)很接近。從開發(fā)者的角度,HTML5 應(yīng)用是一些基于 HTML,JavaScript,CSS 的程序,它們使用開放技術(shù),可以離線使用,可以取代諸如 Silverlight 及 Flash 等專用平臺(tái)的部分工作。或者說(shuō),多年來(lái),你用來(lái)創(chuàng)建 Web 頁(yè)面的東西,現(xiàn)在可以用來(lái)創(chuàng)建類似桌面和智能手機(jī)程序的應(yīng)用。開源模式帶來(lái)轉(zhuǎn)變
O’Reilly 創(chuàng)始人,Tim O’Reilly,一位開源的支持者,曾在《Open Source Paradigm Shift》中如是說(shuō):
"IBM 對(duì)個(gè)人電腦設(shè)計(jì)的商品化使利潤(rùn)從硬件轉(zhuǎn)移到軟件這一層面,而開源將帶來(lái)新的財(cái)富"
價(jià)值在不同的層面轉(zhuǎn)移,HTML5 將成為新的層面,商品的價(jià)值在下降,現(xiàn)時(shí)的瀏覽器已經(jīng)成為商品,但這并沒有問(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 離線應(yīng)用本身更有價(jià)值。發(fā)布渠道的重要
諸如 蘋果應(yīng)用商店,Android 應(yīng)用商店一類的渠道將成為主導(dǎo),另外,一些新的,象 Valve 游戲渠道,Netflix 電影渠道一類的東西將會(huì)出現(xiàn),在”云“時(shí)代,這些發(fā)布渠道將像桌面時(shí)代的操作系統(tǒng)一樣用來(lái)對(duì)用戶進(jìn)行組織和歸類。
我們是如何到達(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ú)論如何,用戶都能看到,然而你能想象人們都自己定義 Web 時(shí)的情景嗎,假如有人不使用 HTTP協(xié)議,或者不使用 HTML,那才是世界的末日。W3C 一類的組織讓各個(gè)瀏覽器廠家都保持同一個(gè)方向。
還好,我們并沒有很多渲染引擎
瀏覽器并不好做,數(shù)十億的網(wǎng)頁(yè),參差不齊的代碼,這些東西讓獨(dú)立開發(fā)者沒有機(jī)會(huì)單獨(dú)設(shè)計(jì)瀏覽器,因此,有能力設(shè)計(jì)瀏覽器的始終是那么一小撮廠商,事實(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í)日,但瀏覽器廠商已經(jīng)在實(shí)現(xiàn)各種 HTML5 功能。
功能探測(cè) vs 瀏覽器探測(cè)
如果你是開發(fā)者,你可以使用那些高級(jí)功能,但需要進(jìn)行功能探測(cè)并提供漸進(jìn)式設(shè)計(jì)。坊間有大量的功能探測(cè)庫(kù),如 Modernizer ,另外,Mark Pilgrim 有一個(gè)清單,它可以讓你探測(cè)任何功能。
離線 API
離線 API 是一切 HTML5 應(yīng)用的基礎(chǔ),不單單是離線數(shù)據(jù)的事,對(duì)開發(fā)者來(lái)說(shuō),擁有本地存儲(chǔ)(localStorage)自然很好,但如何讓程序完全離線運(yùn)行?Application Cache 是答案。如果不能離線保存源文件和數(shù)據(jù),我們就無(wú)法實(shí)現(xiàn)離線的 HTML5 應(yīng)用。
我們目前有幾種離線存儲(chǔ)機(jī)制,簡(jiǎn)單的如 localStorage 和 SQL 存儲(chǔ)引擎,已經(jīng)有一些瀏覽器在支持了,而最新的明星是 Indexed Database,它得到了所有主流瀏覽器支持。這些離線保存應(yīng)用和數(shù)據(jù)的能力,是 HTML5 的基礎(chǔ),目前,Webkit,F(xiàn)irefox 已經(jīng)可以實(shí)現(xiàn),而 IE9 也即將實(shí)現(xiàn)。即時(shí) IE9 的支持還需要等待,想一下,最需要離線應(yīng)用的場(chǎng)合是哪里,自然是智能手機(jī)和上網(wǎng)本,智能手機(jī)多數(shù)都是用 Webkit。