? ? ? ? ?HTML5是HTML最新的修訂版本,2014年10月由萬(wàn)維網(wǎng)聯(lián)盟 (W3C)完成標(biāo)準(zhǔn)制定。 目標(biāo)是取代1999年所制定的HTML 4.01和XHTML 1.0標(biāo)準(zhǔn),以期能在網(wǎng)際網(wǎng)路應(yīng)用迅速發(fā)展的時(shí)候,使網(wǎng)路標(biāo)準(zhǔn)達(dá)到符合當(dāng)代的網(wǎng)路需求。 廣義論及HTML5時(shí),實(shí)際指的是包括HTML、 CSS和JavaScript在內(nèi)的一套技術(shù)組合。 它希望能夠減少網(wǎng)頁(yè)瀏覽器對(duì)于需要外掛程式的豐富性網(wǎng)路應(yīng)用服務(wù) (Plug-in-Based Rich Internet Application, RIA ),例如: Adobe Flash 、 Microsoft Silverlight與Oracle JavaFX的需求,并且提供更多能有效加強(qiáng)網(wǎng)路應(yīng)用的標(biāo)準(zhǔn)集。
? ? ? ? Web上的所有技術(shù)的規(guī)格都由萬(wàn)維網(wǎng)聯(lián)盟(W3C)負(fù)責(zé)管理。作為一名前端工程師的您,可能訪問(wèn)過(guò)該聯(lián)盟的網(wǎng)站[w3.org](https://www.w3.org/TR/html5/)來(lái)尋找HTML5的某個(gè)問(wèn)題的答案?;蛘咴趃oogle搜索HTML specs找到規(guī)范的文檔途徑。
? ? ? ? 就這樣,您接觸到了規(guī)格,但幾乎立刻被嚇得落荒而逃。您一定會(huì)得,“什么嘛,這完全不是給人讀的?!睂?shí)際上,它是給人讀的,前提是您預(yù)先了解一些關(guān)鍵信息。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"圣經(jīng)寫出來(lái)不是為了給人讀,而是為了給人解的。 "
? ? ? ? 如果您想要尋找某個(gè)問(wèn)題的答案,實(shí)際上就是在尋找的是一本用戶手冊(cè),或一篇用戶指南;換言之,您想要了解的是該技術(shù)的用法。然而,這卻并不符合W3C規(guī)格的創(chuàng)作意圖。所謂“規(guī)格”,它意在告知負(fù)責(zé)實(shí)現(xiàn)該技術(shù)的程序員,有哪些特性是必須提供的,以及它們應(yīng)該如何實(shí)現(xiàn)。
? ? ? ? ?維修手冊(cè)在語(yǔ)言風(fēng)格上注重精確性,這一點(diǎn)和語(yǔ)調(diào)輕松、行文隨意的談話作品相當(dāng)不同。同樣地,W3C規(guī)格的語(yǔ)言風(fēng)格也一絲不茍。以下是一些您在閱讀規(guī)格時(shí)會(huì)常常遇到的字詞。
規(guī)范性
如果您看到“本節(jié)是規(guī)范性的(normative)”,則指出該節(jié)的內(nèi)容會(huì)指定實(shí)現(xiàn)者應(yīng)該遵循的細(xì)節(jié)。而提示性(informative)章節(jié)則不然,它們通常是一些示例和解釋。
用戶代理
這個(gè)有點(diǎn)兒故弄玄虛的術(shù)語(yǔ),意思其實(shí)是指這樣的程序:用戶需要憑借它才能和某項(xiàng)技術(shù)打上交道。對(duì)于HTML而言,它的用戶代理就是瀏覽器。對(duì)于可縮放矢量圖形而言,它的用戶代理可能是一個(gè)查看器,如[Batik](http://xml.apache.org/batik/);又或是一個(gè)插件,如[Adobe?SVG?Viewer](http://www.adobe.com/svg/)。
RFC
Request?For?Comment的縮寫,意思是該文檔代表某個(gè)互聯(lián)網(wǎng)標(biāo)準(zhǔn)(草案)。
助動(dòng)詞
如果某個(gè)規(guī)格中寫道,它遵循[RFC2119](http://www.ietf.org/rfc/rfc2119.txt)?,那么接下來(lái)文中出現(xiàn)的特定助動(dòng)詞就會(huì)帶有正式的對(duì)應(yīng)含義。?必須(must)的意義是:某定義是絕對(duì)要求的;?絕不(must?not)的意義是:某定義是絕對(duì)禁止的;?應(yīng)該(should)的意義是:某個(gè)特性可以實(shí)現(xiàn)也可以不實(shí)現(xiàn),但如果不實(shí)現(xiàn)的話,最好有個(gè)很好的理由;?不應(yīng)該(should?not)的意義是:如果確實(shí)需要在實(shí)現(xiàn)里包括某個(gè)特性,則最好有個(gè)很好的理由。
親愛(ài)的Martha阿姨:謝謝您那本講大象的書。它告訴我關(guān)于大象的知識(shí),比我想知道的還要多。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一個(gè)孩子的感謝信
? ? ? ? 如果您發(fā)現(xiàn)自己在讀的文字沒(méi)有明顯的標(biāo)記,只有大量的冗詞,讀起來(lái)既像法律術(shù)語(yǔ),又像是計(jì)算機(jī)科學(xué)講座,或兩者兼似的話,也許僅僅粗粗看一眼就夠了。
? ? ? ? 另一方面,有時(shí)您卻應(yīng)該放慢閱讀速度。當(dāng)您看到一張示意圖時(shí),請(qǐng)看看它的題注和標(biāo)注。這些通常都會(huì)指向重要信息。當(dāng)您看到一節(jié)中包含有一個(gè)或數(shù)個(gè)示例時(shí),請(qǐng)放慢速度,仔細(xì)閱讀。
? ? ? ? BNF是Backus Naur Form或Backus Normal Form的縮寫。它是一種用來(lái)表示計(jì)算機(jī)語(yǔ)言語(yǔ)法的緊湊形式,它實(shí)際上無(wú)處不在。不同的規(guī)格使用不同風(fēng)格的BNF,但它們的共同之處是都把大段的自然語(yǔ)言描述變換成了符號(hào)形式。下面是一個(gè)說(shuō)明了三明治成分的例子:
? ? ? ? 三明治由以下成分構(gòu)成:一塊面包下切片,還有芥茉或蛋黃醬;生菜可放可不放;西紅柿切片可放可不放;二至四塊紅腸、臘腸或火腿以任意方式組合的切片;一塊或多塊芝士切片;還有一塊面包上切片。
其變換形式為:
三明治 ::= 面包下切片 [ 芥茉 | 蛋黃醬 ] 生菜? 西紅柿? [紅腸 | 臘腸 | 火腿 ] {2,4} 芝士+ 面包上切片
?定義的各成分按順序列出,以空格分隔。各項(xiàng)目以方括號(hào)分組,組內(nèi)選擇以豎線分隔。
? ? ? ? 如果項(xiàng)目后面跟著一個(gè)問(wèn)號(hào),意思是“一個(gè)或沒(méi)有”;如果后面跟著一個(gè)加號(hào),意思是“一個(gè)或多個(gè)”;如果后面跟著一個(gè)星號(hào),意思是“零個(gè)或多個(gè)”;如果后面跟著一個(gè)里面有數(shù)字的花括號(hào),數(shù)字就代表著項(xiàng)目允許出現(xiàn)次數(shù)的上下限。
? ? ? ? 小括號(hào),或更多的方括號(hào),用來(lái)給更復(fù)雜的定義中的項(xiàng)目分組。有時(shí)候,也會(huì)用尖括號(hào)括起某項(xiàng)目表示這是一個(gè)通用項(xiàng)目(如“顏色”),或用引號(hào)括起某項(xiàng)目表示這是一個(gè)守恒項(xiàng)目。
更多的閱讀細(xì)則待以后做更詳細(xì)的歸納總結(jié):
小結(jié):
1. 建立明確的意識(shí):規(guī)格是寫給實(shí)現(xiàn)者,而非最終用戶看的;
2. 許多規(guī)格都包含一個(gè)專門章節(jié),以說(shuō)明其組織方式,以及應(yīng)該如何閱讀;
3. 熟知規(guī)格專用詞匯;
4. 務(wù)請(qǐng)記住,您不必閱讀逐字閱讀規(guī)格。學(xué)會(huì)跳讀,集中閱讀有意義的部分;
5. 跳過(guò)名字空間相關(guān)討論章節(jié);
6. 學(xué)習(xí)閱讀BNF,很多地方都在使用它;
7. 學(xué)會(huì)閱讀DTD,并從中找到語(yǔ)法問(wèn)題的答案;
8. 如果某項(xiàng)技術(shù)涉及可編程腳本,該信息就包含在綁定中。
只要耐心有加、堅(jiān)持不懈,您一定會(huì)為從W3C規(guī)格中獲取的海量信息而感到驚喜。