瞭解 Web 標準規範和組織

shixinz.com發表於2019-04-20

  Web 標準是由各大標準組織制定,由瀏覽器和其他 Web 底層框架或工具來實現,再提供給開發者能以最小成本開發適用於多平臺的 Web 應用,這些標準是我們能訪問無數網站的前提。

 學習標準的必要

  最近在 MDN 上學習 Web Components,學習中有些疑惑在 MDN 上沒有提及,最後通過查閱 Custom elements 標準規範才解決了我的疑惑,讓我感慨原來標準規範這麼有用。

  制定 Web 標準的目的是嚴謹、無疏漏、無歧義地描述相關技術實現,一般來說這些標準規範是給像瀏覽器開發者的人來使用的,對於一般的 Web 工程師來說,平時用不上它,因為這些標準太過囉嗦和難懂。

  但是學習標準也有它的好處。因為我們接觸的技術文件或文章,大都經過作者的理解和翻譯,導致有些內容作者解讀得不夠全面甚至是錯誤的,因此影響到我們的學習效果。所以如果想要深入學習技術的原理,通過看最原始的標準文件,理解並建立自己知識體系,是很有必要的。

 Web 標準計劃

  在 Web 發展的早期,瀏覽器各自為政,技術無一致實現,這直接損害了設計師、開發者、使用者和行業的利益。為了解決這些問題,Web 標準計劃 (Web Standards Project, WaSP) 於 1998 年成立,目標便是促進核心的 Web 標準的推廣,鼓勵瀏覽器對標準的支援,為大家尋求一條簡單而便利之路。

  得益於前人努力,如今的現代瀏覽器表現已經越來越一致,進而催生出更多標準,有了這些標準我們可以開發出體驗更好的 Web 應用。

  這個是所有瀏覽器相關的技術標準: The Web platform: Browser technologies,從中能瞭解到健全發展的 Web 技術生態。

 Web 標準組織

  說到 Web 標準,就不得不提製定這些標準的組織,這些標準不單只是由一個組織來制定,多個組織各自負責相關的技術領域,下面一一介紹。

  W3C (World Wide Web Consortium)

  W3C 組織為 Web 開發領域提出了很多建議,比如為 XHTML、XML、DOM、CSS 和 Web API 等技術實現提出了建議。你可能會注意到為什麼說是提出建議,而不是標準呢?那是因為 W3C 自認為不是標準組織,他們只是組織了 Web 相關領域的專家,這些專家組成一支工作小組,工作小組就如何實現 Web 技術提出建議。儘管 W3C 對其建議的實現方案沒有任何強制權力,但他們大多數的建議都被視為事實上的標準。

  W3C 組織關注 DOM、CSS、HTTP、媒體、效能、安全、圖形學、可訪問性和使用者隱私等方方面面的技術,在這裡可以搜尋相關技術: All Standards and Drafts

  從 W3C 組織成員的工作手冊可以看到,一項技術從提出到成為標準,需要經過 4 個階段。

  W3C 技術建議的幾個階段

  1. WD (Working Drafts):草案階段
  2. CR (Candidate Recommendation):候選階段
  3. PR (Proposed Recommendation):提議階段
  4. REC (W3C Recommendation):正式建議階段

  WHATWG (The Web Hypertext Application Technology Working Group)

  WHATWG 工作小組成立於 2004 年,起因是 W3C 組織對 HTML 不再感興趣,轉而關注 XHTML 技術,部分 W3C 成員對此行為不滿,因此他們決定建立一個新組織推動 HTML 發展,制定相關標準。如今 HTML5 技術能發展起來,也是得助於 WHATWG 小組。

  WHATWG 小組因 HTML 而生,負責的 Web 標準主要是 HTML 相關技術,也涉獵一些 Web API,比如: HTMLDOM瀏覽器相容性XHRFetchStorageURL 等標準。在這裡可以檢視所有標準:WHATWG Standards

  WHATWG 組織沒有明確說明,一項技術成為標準要經過哪些階段,他們實行的是現行標準 (Living Standard),標準由相關負責人維護升級,並由開發者或瀏覽器廠商提議將新功能加入標準,這一協作過程通過 Github 的 Issues 來討論。

  如果仔細看 WHATWG 和 W3C 制定的標準,會發現有些標準互有重疊,兩個組織都有制定相同的技術標準,比如 DOM 標準。有一些標準會在開頭說明:“該標準已經不由我們來維護,請檢視某某組織的最新標準”。但是其他一些標準並沒有這樣的說明,至於參考哪一個標準,我的方法是檢視 MDN 相關技術文件下附加的標準規範連結。

  MDN 參考規範

  ECMA

  ECMA 組織負責很多與資訊化相關的技術標準,其中應用最廣的就是 TC39 委員會負責的 ECMAScript 標準,這標準的實現就是 JavaScript。

  通過 TC39 成員的工作手冊可以看出,每一項對 ECMAScript 標準的更新,需要經過 5 個階段。

  1. Strawman (Stage 0):提案納入考慮中
  2. Proposal (Stage 1):明確提案的好處,以及可能帶來的風險
  3. Draft (Stage 2):使用正式的規範語言描述語法和語義
  4. Candidate (Stage 3):根據使用者反饋進行改良
  5. Finished (Stage 4):準備正式加入 ECMAScript 標準

  現在正在進行的提案可以在倉庫 tc39 proposals 檢視,從中能夠學習到最新的語法並參與討論。

  IETF

  IETF (The Internet Engineering Task Force) 組織主要負責制定網際網路基礎架構的標準,比如 TCP/IP 和 FTP 協議。

  The Unicode Consortium

  The Unicode Consortium 組織負責 Unicode 標準,正如他們所說,“我們為每個字元提供一個唯一的編號,無論平臺是什麼,無論程式是什麼,無論語言是什麼”。

總結

  對一般 Web 開發來說,我們用不上晦澀難懂的標準文件。但學習標準我們可以收穫很多,比如解決一些棘手的 bug,獲取第一手學習資源,全面深入地理解相關技術,瞭解技術的發展前沿。

相關文章