霸州迅騰建站正處于Web平臺(tái)更新?lián)Q代的過程之中。HTML5通常被用來描述這一過程,盡管更新?lián)Q代中的技術(shù)并不局限于HTML5標(biāo)準(zhǔn)所定義的特性。
我使用了“Web平臺(tái)”(Web platform)這個(gè)術(shù)語,代指能被Web瀏覽器支持的一系列協(xié)議、格式以及APIs。開發(fā)者使用這些特性來構(gòu)建時(shí)新的一些應(yīng)用,這些應(yīng)用支持社會(huì)交互,并且充分利用了設(shè)備的能力,比如照相功能、麥克風(fēng)功能以及GPS功能。HTTP、TLS以及WebSockets是Web平臺(tái)中的一部分協(xié)議;HTML、CSS以及Javascript是Web平臺(tái)格式中的一些例子。Web平臺(tái)中的APIs包括Geolocation API以及針對(duì)
<canvas> 元素的2D drawing API等。
最終,如果一個(gè)特性能被廣泛實(shí)現(xiàn),并且開發(fā)人員經(jīng)常使用它來創(chuàng)建穩(wěn)定的用戶體驗(yàn),那么這個(gè)特性就成為了Web平臺(tái)的一部分。World Wide Web Consortium (W3C)功不可沒,它讓股東們坐到一起,統(tǒng)一開發(fā)一些免費(fèi)標(biāo)準(zhǔn),并創(chuàng)建配套資源,如測(cè)試集以及驗(yàn)證程序。
標(biāo)準(zhǔn)作為一個(gè)共享協(xié)議來說,是非常有用的,但是Web平臺(tái)包括大量不同成熟度的技術(shù),這些技術(shù)并沒有都標(biāo)準(zhǔn)化。當(dāng)開發(fā)者使用這些技術(shù)的時(shí)候,就會(huì)遇到一些實(shí)際的問題了,其中包括:
- 我該如何減少special-case code?
- 哪些代碼現(xiàn)在是足夠穩(wěn)定可以讓我使用的?
- 對(duì)于那些沒有最新瀏覽器的用戶,我該如何處理?
這些問題的答案隨著時(shí)間發(fā)生變化,因此開發(fā)者已經(jīng)制定了切實(shí)可行的解決方案,如fallback和“polyfills”(這將在稍后進(jìn)一步解釋)這些方案能讓內(nèi)容在老的瀏覽器以及最新的瀏覽器中都可用。在這篇文章中,我并沒有關(guān)注HTML5標(biāo)準(zhǔn)的狀態(tài),而是探討了一些有用資源,這些資源可用幫助開發(fā)者開始使用現(xiàn)在的開放Web平臺(tái)技術(shù)(Open Web Platform technology)。這些資源闡明了使用HTML5的“原理與實(shí)現(xiàn)方法”,對(duì)標(biāo)準(zhǔn)進(jìn)行了補(bǔ)充,并最終能加快部署。
platform.html5.org對(duì)一個(gè)忙碌的開發(fā)人員來說,他該如何跟進(jìn)最新的特性,了解什么fallbacks 以及、polyfills(如果有的話)是可以用的?我編輯了一個(gè)網(wǎng)站,
platform.html5.org,它可以讓你了解構(gòu)成Web平臺(tái)的最新技術(shù)。(它是由
github repository支持的,我非常鼓勵(lì)你來幫助維護(hù)這個(gè)站點(diǎn),只需要使用
forking the repo 就可以了,并發(fā)送更新請(qǐng)求)。
這個(gè)站點(diǎn)將技術(shù)進(jìn)行了分類,如繪圖和排版、多媒體以及存儲(chǔ)。站點(diǎn)上的圖標(biāo)代表了每個(gè)技術(shù)的成熟度。綠色的小旗幟表示一個(gè)特性可以使用了。**閃電代表“需要謹(jǐn)慎使用”。然而,這些都只是很粗略的指示;要想真正了解這些特性,你需要點(diǎn)擊后面的一些有用的鏈接,如下所示:
- HTML5 Please
- When Can I Use…
- MDN (Mozilla Developer Network)
- 其他一些提供了與特性相關(guān)的測(cè)試集的站點(diǎn)
特別的,HTML5 Please site值得作進(jìn)一步的評(píng)論。它是由
H5BP developer collective(
HTML5 Boilerplate背后的開發(fā)者小組)創(chuàng)建的。它根據(jù)名字列出了各個(gè)特性,并對(duì)每個(gè)特性的成熟度做出了高屋建瓴的描述。它還展現(xiàn)了一個(gè)狀態(tài)面板,其中顯示了各個(gè)特性的狀態(tài)信息(可以使用/小心使用/避免使用,
use/caution/avoid)。在某些情況下,”caution” 和”use”關(guān)鍵字后附加了”with fallback” 或 “with polyfill”。在有”with fallback”的情況下,你可以擴(kuò)大該面板查看究竟如何為該特性提供fallback。
polyfill 是指一段Javascript代碼,作為一個(gè)特性的某種shim;也就是說,它模擬了一個(gè)將來的API,這個(gè)API為老的瀏覽器提供fallback功能。
HTML5 Please的站點(diǎn)管理者讓任何人都可以很容易為這個(gè)站點(diǎn)做貢獻(xiàn),他們?cè)诿總(gè)面板上都提供了一個(gè)“編輯該信息”(”Edit this info”)的鏈接,讓你可以創(chuàng)建頁面內(nèi)容的副本,并將其提交給該站點(diǎn)。(該機(jī)制是由
a github repository支持的,任何人對(duì)內(nèi)容的修改都會(huì)作為pull requests提交)。該站點(diǎn)的維護(hù)者將會(huì)對(duì)內(nèi)容進(jìn)行審查并合并內(nèi)容。
有時(shí)候你希望能看到比HTML5 Please所提供的信息更詳細(xì)的一些狀態(tài)信息。例如,你也許想確切知道哪些瀏覽器支持某個(gè)特定的瀏覽器,以及每個(gè)瀏覽器的哪些版本支持它,或者在移動(dòng)瀏覽器中,特性受到什么程度的支持,以及那些瀏覽器的OS版本是什么。這時(shí)候,你就需要查看When Can I Use…站點(diǎn)了。
When Can I Use是由Alexis Deveria維護(hù)的。他跟進(jìn)大量特性的狀態(tài),并在新版本的瀏覽器發(fā)布時(shí)更新站點(diǎn)。如果有某種特性是你想要了解但When Can I Use站點(diǎn)上還沒有的,你可以
建議該站點(diǎn)加上。
現(xiàn)在記錄在When Can I Use上的每一個(gè)特性都有一個(gè)表,表中有一列是主流的桌面瀏覽器(IE, Firefox, Chrome, Safari以及Opera),一列是主流的移動(dòng)瀏覽器(iOS Safari, Opera Mini, Opera Mobile以及 Android Browser),每一行是每個(gè)瀏覽器的版本號(hào)。和其他站點(diǎn)一樣,用顏色標(biāo)明了每個(gè)特定瀏覽器版本對(duì)一個(gè)特性的支持度(
support/partial(部分支持), support/no(不支持), support/unknown(不確定是否支持))。
例如,可以看看
CSS Counters受到的支持程度。充滿綠色條目的表說明該特性受到很好的支持。其他支持不是很好的特性是用紅色標(biāo)出的。
When Can I Use站點(diǎn)中的每個(gè)特性表都提供了一個(gè)”see-also”鏈接到相關(guān)特性的表,還有到第三方站點(diǎn)的鏈接,這些第三方站點(diǎn)提供了這些特性的使用信息,教會(huì)你如何使用這些特性進(jìn)行開發(fā)。
MDN (Mozilla Developer Network)是platform.html5.org 和When Can I Use都加了鏈接的站點(diǎn)?梢詫DN看作”how can I use”特性使用指南。例如,如果你想要實(shí)現(xiàn)Web Workers,需要一些代碼示例以及鏈接到有詳細(xì)信息的資源,那么,MDN上就有個(gè)頁面是關(guān)于
使用Web Workers的,它對(duì)于入門非常有幫助。
和HTML5 Please, When Can I Use以及platform.html5.org一樣,MDN也是非常歡迎大家做貢獻(xiàn)的,并讓這個(gè)過程比其他站點(diǎn)更快捷簡(jiǎn)單:整個(gè)站點(diǎn)就是一個(gè)wiki,所以一旦你創(chuàng)建了一個(gè)賬戶,你就能編輯任何頁面。
前面提到的站點(diǎn)可以幫你跟進(jìn)新出現(xiàn)的Web平臺(tái)。我希望隨著平臺(tái)的成熟以及更多人分享他們的代碼和經(jīng)驗(yàn),更多有用的站點(diǎn)能夠出現(xiàn)。我很樂意你去使用我提到的這些站點(diǎn),并將你自己的發(fā)現(xiàn)提交到這些站點(diǎn),以便讓關(guān)于Web平臺(tái)的高質(zhì)量的、最新的信息讓大家都能共享。