現(xiàn)在的 HTML5 就像當(dāng)年嶄露頭角時的 Ajax,有人在做,但不知道叫它什么。最近,蘋果在 HTML5 上大做文章,而著名的 Web 設(shè)計師 Eric Meyer 則提出了 Web Stacks 的概念。Alex Kessinger 是 Yahoo 的一名前端工程師,本文是他對 HTML5 應(yīng)用現(xiàn)狀與前景的思考(完整圖文版)。
術(shù)語
首先說說 HTML5 應(yīng)用中的幾個定義。
HTML5
HTML5 最好的定義來自 Mark Pilgrim 的 Dive Into HTML5:
"HTML5 是繼 HTML4.01,XHTML 1.0/1.1 之后的下一代 HTML"
值得一提的是,我們或許能看到 HTML6,然而按 Pilgrim 在 WHATWG 博客中的說法,下一代 HTML 很可能去掉版本號這一概念。
應(yīng)用
來自 Wikipedia 的解釋:
"應(yīng)用程序是計算機(jī)用來執(zhí)行特定任務(wù)的軟件"
HTML5 應(yīng)用
從用戶的角度,HTML5 應(yīng)用和其它的計算機(jī)應(yīng)用程序還不完全一樣,但已經(jīng)很接近。從開發(fā)者的角度,HTML5 應(yīng)用是一些基于 HTML,JavaScript,CSS 的程序,它們使用開放技術(shù),可以離線使用,可以取代諸如 Silverlight 及 Flash 等專用平臺的部分工作。或者說,多年來,你用來創(chuàng)建 Web 頁面的東西,現(xiàn)在可以用來創(chuàng)建類似桌面和智能手機(jī)程序的應(yīng)用。開源模式帶來轉(zhuǎn)變
O’Reilly 創(chuàng)始人,Tim O’Reilly,一位開源的支持者,曾在《Open Source Paradigm Shift》中如是說:
"IBM 對個人電腦設(shè)計的商品化使利潤從硬件轉(zhuǎn)移到軟件這一層面,而開源將帶來新的財富"
價值在不同的層面轉(zhuǎn)移,HTML5 將成為新的層面,商品的價值在下降,現(xiàn)時的瀏覽器已經(jīng)成為商品,但這并沒有問題,只要它們都遵守標(biāo)準(zhǔn)。人們說,我們可以將操作系統(tǒng)置入瀏覽器中,但這行不通,如果我們可以從過去的經(jīng)歷中學(xué)到些什么,那就是,不能簡單照抄過去的模式,好比廣播到電視的變遷,你不能簡單地在一個播音員面前放臺攝像機(jī)完事,將操作系統(tǒng)置入瀏覽器未必比 HTML5 離線應(yīng)用本身更有價值。發(fā)布渠道的重要
諸如 蘋果應(yīng)用商店,Android 應(yīng)用商店一類的渠道將成為主導(dǎo),另外,一些新的,象 Valve 游戲渠道,Netflix 電影渠道一類的東西將會出現(xiàn),在”云“時代,這些發(fā)布渠道將像桌面時代的操作系統(tǒng)一樣用來對用戶進(jìn)行組織和歸類。
我們是如何到達(dá)現(xiàn)在這個階段的?
有兩個關(guān)鍵的因素。
感謝 Web 標(biāo)準(zhǔn)
盡管瀏覽器市場并不統(tǒng)一,但至少他們都運(yùn)行 HTML,JavaScript 和 CSS。當(dāng)我們希望通過 Web 推出一些東西的時候,我們知道,無論如何,用戶都能看到,然而你能想象人們都自己定義 Web 時的情景嗎,假如有人不使用 HTTP協(xié)議,或者不使用 HTML,那才是世界的末日。W3C 一類的組織讓各個瀏覽器廠家都保持同一個方向。
還好,我們并沒有很多渲染引擎
瀏覽器并不好做,數(shù)十億的網(wǎng)頁,參差不齊的代碼,這些東西讓獨(dú)立開發(fā)者沒有機(jī)會單獨(dú)設(shè)計瀏覽器,因此,有能力設(shè)計瀏覽器的始終是那么一小撮廠商,事實上,時至今日,我們只有四種主要的瀏覽器渲染引擎,Trident (IE), Gecko (Mozilla, Firefox), WebKit (Chrome, Safari), 以及 Presto (Opera),而眾多瀏覽器都是建立在這些渲染引擎之上的。這意味著,不管在什么樣的設(shè)備上,我們不用太擔(dān)心它使用什么樣的瀏覽器,不管什么設(shè)備,只要它有一個瀏覽器,就有一個可以運(yùn)行 HTML5 的環(huán)境。標(biāo)準(zhǔn)何日面世?
關(guān)于 HTML5 成為標(biāo)準(zhǔn)的時間,Ian Hixie 的說法最受認(rèn)可:
"根據(jù)估計,HTML5 直到 2022 年才會形成 W3C 推薦標(biāo)準(zhǔn)"
然而,雖然標(biāo)準(zhǔn)的形成尚待時日,但瀏覽器廠商已經(jīng)在實現(xiàn)各種 HTML5 功能。
功能探測 vs 瀏覽器探測
如果你是開發(fā)者,你可以使用那些高級功能,但需要進(jìn)行功能探測并提供漸進(jìn)式設(shè)計。坊間有大量的功能探測庫,如 Modernizer ,另外,Mark Pilgrim 有一個清單,它可以讓你探測任何功能。
離線 API
離線 API 是一切 HTML5 應(yīng)用的基礎(chǔ),不單單是離線數(shù)據(jù)的事,對開發(fā)者來說,擁有本地存儲(localStorage)自然很好,但如何讓程序完全離線運(yùn)行?Application Cache 是答案。如果不能離線保存源文件和數(shù)據(jù),我們就無法實現(xiàn)離線的 HTML5 應(yīng)用。
我們目前有幾種離線存儲機(jī)制,簡單的如 localStorage 和 SQL 存儲引擎,已經(jīng)有一些瀏覽器在支持了,而最新的明星是 Indexed Database,它得到了所有主流瀏覽器支持。這些離線保存應(yīng)用和數(shù)據(jù)的能力,是 HTML5 的基礎(chǔ),目前,Webkit,F(xiàn)irefox 已經(jīng)可以實現(xiàn),而 IE9 也即將實現(xiàn)。即時 IE9 的支持還需要等待,想一下,最需要離線應(yīng)用的場合是哪里,自然是智能手機(jī)和上網(wǎng)本,智能手機(jī)多數(shù)都是用 Webkit。