Web 标准与前端开发|青训营笔记

94 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

前言

Web标准不单只是由一个组织来制定,多个组织各自负责相关的技术领域,有W3C、ECMA、WHATWG、IETF,下面就具体介绍W3C和Ecma TC39,补充了学习路线图的链接

了解Web标准组织

制定 Web 标准的目的是严谨、无疏漏、无歧义地描述相关技术实现,一般来说这些标准规范是给像浏览器开发者的人来使用的,对于一般的 Web 工程师来说,平时用不上它,因为这些标准太过啰嗦和难懂。

但是: 想要深入学习技术的原理,通过看最原始的标准文档,理解并建立自己知识体系,是很有必要的。

W3C (World Wide Web Consortium)

W3C目前在全球有457家会员 ,其中北航总部(中国区)会员47家

W3C规范制定流程 image.png

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

稍微具体:

  • Explainer demo(说明文档)
  • Find the right community/group(把文档提交到社区小组的)
  • Web IDL for APIs(用 Web IDL 描述怎么写接口)
  • Step-by-step algorithms(把算法描述清楚)
  • GitHub, Markdown, respec, bikeshed, etc.(用官方标准制定的工具和语言进行规范)
  • Get an early review w3ctag/design-reviews(由w3ctag相关专家进行评审)
  • Write web-platform-tests (WPT) tests I(写一些测试用例)

ECMA(Ecma International)

Ecma TC39

Ecma的AM (Associate Member) 会员目前有18家,中国公司有字节跳动、360、 阿里、华为、腾讯等5家 ,目前中国没有OM(Ordinary Mebmer)

Ecma规范制定流程

  • STAGE 0: strawman. A free form way of submitting ideas.(以任何形式提交的想法)
  • STAGE 1: proposal. A formal proposal for the feature.(正式的文档建议)
  • STAGE 2: draft. Has description of syntax and semantics.(草案,有语法和语义相关描述)
  • STAGE 3: candidate. Spec text complete, has 2 implementations(候选推荐,文本完备)
  • STAGE 4: finished. Ready for standard, passes unit tests(成立标准)

稍微具体:

  • Championing a proposal at TC39(作为提案的负责人)
  • How to write a good explainer(怎么去写说明建议书)
  • Presenting a Proposal to TC39(展示提议)
  • Reading a proposal draft(参考其他的草案)
  • Stage 3 Proposal Reviews(反馈)
  • How to experiment with a proposal before Stage 4(如何在阶段4之前尝试提案)
  • Implementing and shipping TC39 proposals(实现题案) 详细链接

如何参与

可以通过线上会议的方式,参与其中

W3C会议

年度大会

  • AC (Advisory Committee)
  • TPAC (Technical Plenary and Advisory Committee)

工作组会议

Ecma会议

年度大会

  • GA (General Assembly).

TC39会议

  • 每1-2个月

在官网上也会有相应的会议链接

参考资料

学习路线

roadMap

W3C

官网 + Github + 规范查询

Ecma TC39

官网 + TC39 + Github + Discourse

WHATWG

官网 + Github + 规范查询

IETF

官网 + Github