HTML5須知十件事
英文原文:10 things you should know about HTML5
一兩年前,HTML5似乎還是一個模糊的概念,只有少數幾個互聯網的書呆子才會關心。而現在,卻感覺仿佛HTML5無所不在了。感謝Mozilla和Chrome的快速發布,以及微軟IE9的部署(IE10現在也處于“技術預覽”狀態了),數量有限(或者說比有限要更好些)的支持HTML 5的瀏覽器已將近人人皆可享受。開發人員開始利用那些得到廣泛實現的功能特性。不出1年HTML 5就將得到完全支持,而規范也正在迅速到達穩定狀態,現在正是了解一些HTML 5須知的好時機。
1: XHTML不再,(支持XML 語法的)HTML 5永存
XHTML是喜歡精確,尤其是在解析方面精確的人的選擇。HTML外觀一直都有很多與XML相似的地方,但卻永遠都無法跟XML一模一樣,因此,試圖把它當做XML來解析必將失敗。因此不久前,XHTML被制定出來替代HTML語言,并把它歸到XML的術語里面。當HTML 5的 工作首次啟動的時候,同時也在進行著XHTML 2的工作,但它最終還是被封存了。相反地,HTML 5規范制定出來的目的在于,讓你能夠編寫遵循嚴格的XML語法的,并能工作的HTML 5文件。 如果你把它跟XML MIME類型一并發送出去的話,用戶端也會把它作為XML文檔來進行解析。這把兩個世界最好的東西都給了開發人員。
2: 2022之神話,2011之現實
對于HTML 5,流傳很廣的誤解之一是“到2022年之前都不會完成”。其典型的支持證據是若干年前我對HTML 5規范的編輯蘭·希克森(Ian Hickson)的一次采訪。具有諷刺意味的是,即便是在那次采訪中,他對2022年這個日期也很明確。但是有些人對此很激動,其憤怒的文章引起的注意要比實際的事實引發的關注多得多。
事實是2022年是希克森預期HTML5規范成為完全W3C推薦的日子,到那個時候將會有兩個100%完成的、可驗證的實現。這既相當的沒有意義,同時又稱得上是一次巨大的飛躍,為了讓大家了解為什么說,可以想想,沒有其他版本的HTML規范曾經達到過那樣的地位,這主要是因為對于任何實現來說要做到可驗證的正確都太含糊了。而HTML 5規范正接近于固化不變,就是現在,2011年。
3: 對大多數開發人員而言,這是Flash和Silverlight殺手
在如何用于對文檔進行標記方面,盡管HTML 5的確做了若干的改進,大的關注點仍是應用。HTML 5所引入的用于支持應用開發的特性的數量是令人驚愕的。這并不是說Flash和Sliverlight很快就會消失。但是微軟已經宣布其對Sliverlight重新定位關注點為瀏覽器以外的體驗。Flash和Silverlight仍擁有一些HTML 5不具備的能力,但是對于許多共同目標來說,現在鴻溝不再了,這要歸功于HTML 5的新能力。可能重寫已有應用并不值得,但是你應該看看HTML 5對于新應用來說是否有意義。
4: 它是許多新工具的基石
隨著HTML 5成為一個完全成熟的應用框架,工具制造商,尤其是那些設計用于克服跨平臺開發問題的,現在正把他用作其產品的基礎技術。如果你正在尋求編寫跨平臺運行的應用,并且其也在HTML 5的能力范圍之內,那么你應當考慮一下這些工具。這對于移動領域尤其重要,否則的話,對于每一個你打算作為目標的手機平臺來說,都需要去學習全新的語言、API以及框架。
5: 重要而有爭議的tag
“HTML 5最佳新特性”我的個人之選是tag(標簽)。之前(也有tag),你自己得求助于Flash或Silverlight來為你的網站提供一個媒體播放器。而有了這些新的標簽之后,從理論上來說,那些日子一去不復返了。為什么只是“理論上”呢?令人悲哀的的是,由于專利的緣故,對于應該支持哪種格式,不同的瀏覽器制造商尚不太能確定。而一旦塵埃落定,Flash和Silverlight都會失去其#1用戶案例。
6: 谷歌谷歌,帶頭大哥
如果說似乎Chrome瀏覽器在HTML 5上有了一個極好的開端的話,那么這里也有一個好的理由。HTML 5規范的制定進程中給編寫和部署代碼賦以濃彩重墨。我這么說并不是指他們不管任何瀏覽器供應商做了什么都會蓋上“橡皮圖章”了事。但你是很難說服那些參與編寫規范的人接受尚未實現的特性,已實現的特性更有可能被列入為規范新項目的基礎。由于Chrome似乎每幾周就會有一個新版本出來,因此谷歌加進去的新特性也被納入到HTML5規范里面的機會就會很大。
7: “標準兼容”終獲證明
每當有人宣稱某個瀏覽器是或不是“標準兼容”的時候,我都不得不笑起來。在HTML 5之前,標準兼容簡直就不可能被加以證明。許多情況下,當前的規范都太過含糊或干脆對重要問題默不作聲(像處理解析錯誤),結果就是不同的瀏覽器都可以做范圍很廣的不同事情,并依然要么是標準兼容的,要么是被歸類為“不兼容性無法證實”。即便是最著名的ACID測試也證實不了太多東西,由于它只測試了HTML的子集。而HTML 5的門檻則提高了不少,證明一個用戶代理是標準兼容的終于有可能了。的確,2022這個到達“建議”狀態的日期背后的其中一個原因就是需要編寫完全測試包。
8: “標準兼容”仍無法保證外觀
Web瀏覽器里面的標準兼容并沒有像人們通常所認為那樣的行為,HTML 5也沒有改變這一事實。HTML的一個大的困惑是許多的Web設計者和開發人員認為HTML規范控制著屏幕項目的外觀;其實不然。舉個例子,如果它喜歡的話,Web瀏覽器可令tag使用更大或不同顏色的字體而非加粗字體,也還能保持兼容性。許多時候,當設計者說瀏覽器與標準不兼容的時候,其所遭遇到的實際上是賦予用戶代理的在如何顯示標簽方面的靈活性。HTML5并沒有改變這一事實。如果你一定要讓標簽按照精確地方式顯示,別指望瀏覽器的缺省行為,把你的需求在CSS中指定。
9: 解析更為精確
HTML5規范終于引入了精確解析規則,并定義了像用戶代理遭遇解析錯誤時應該做的事情。因此,你可以預期,過去一些習慣于被當做可接受乃至“合法”HTML而通過的東西不再符合要求。你將會想要去熟悉HTML5的解析規則并確保你的代碼符合其要求。
10: HTML5遠非瀏覽器
在HTML之前的版本中,存在著一種與生俱來的假設,那就是傳統的Web瀏覽器是用戶代理的選擇。盡管其他的用戶代理和內容類型也得到了支持,隱含的想法是它們并非同等的重要。但是,針對于非瀏覽器、非桌面大小的用戶代理,HTML5在與瀏覽器更為平等地相待方面做出了很多的改變。像在屏幕閱讀器和手機上工作得有多好之類的東西取得了許多進展。因此,對于需要它的開發人員來說,寫得好的HTML5是能夠“一次編寫,隨處查看”的框架,它也能夠對那些否則就要與Web做斗爭的用戶(尤其是那些存在各種障礙的人士)起作用。