了解 Web 标准规范和组织

2019-02-22 | Web标准

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 技术建议的几个阶段

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 参考规范

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,获取第一手学习资源,全面深入地理解相关技术,了解技术的发展前沿。