XXHolic / blog

I wonder how~, I wonder why~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JavaScript 语言提议的几个状态

XXHolic opened this issue · comments

目录

想法

标准是在不断发展,赋予新的能力,在另一方面同样反应着时代的需求。关注标准的动态有助于更好的使用一种语言。在 Object.observe 中简单探索了一个提议的经历。想着如何去关注这些做一个简单的总结。

到哪里去看提议

线索一

说到提议可能并不怎么熟悉,实际工作中更多的是去接触和遵循标准。在学习前端的时候,从各种教程和书籍中,经常会看到一个词——W3C。用 Google 搜索,很精确出现W3C的官网:https://www.w3.org 。主页如下:

26-w3c-website

左侧是主要分类的菜单,顶部有视图模式、语言、搜索和主要的菜单。中间则是各种标准的动态、任务和事件展示,右侧是对 W3C 的介绍、博客和招聘。如果对标准比较关注的话,就会注意到顶部的大写菜单 “STANDARDS”,点击进去之后,会发现一些类型的标准。

26-w3c-standards

对于前端来说,经常接触到的便是 Web Design and Applications,进入之后页面如下:

26-web-design-and-applications

可以看到熟悉的 HTML、CSS、DOM、JavaScript 等字眼,下面还有一些相关信息动态。目的是找 JavaScript 相关信息,点击 “JavaScript Web APIs” 进入页面:

26-javascript-api

可以看到中间一大段的文字介绍,阅读后可以发现:

  • 这里相关的标准,是对于广泛的脚本来说,并不是只针对 JavaScript 这一种脚本语言。
  • JavaScript 语言的标准由 ECMA 制定。

继续探索,右侧的“CURRENT STATUS”列出了相关的菜单。点击菜单 “Javascript APIs”,进入后就发现这里有需要的相关信息。信息主要分为3大块:Completed Work(完成的工作)、Drafts(草案)、Obsolete Specifications(废弃的规范),其对应的具体内容有:

  • Completed Work:Standards(标准)、Group Notes(团队笔记)
  • Drafts:Proposed Recommendations(推荐的提议)、Candidate Recommendations(推荐候选)、Other Working Drafts(其它工作草案)
  • Obsolete Specifications:Retired(过时或者废弃规范)

这里面规范的制定过程跟 JavaScript 的 TC39 Process 不太一样。具体的可以看 W3C Recommendation Track。至此就可以查看相关提议的动态,虽然不是 JavaScript 语言相关,但也是很重要的信息。

线索二

接下来就是去找 JavaScript 语言相关的动态,在线索一中发现了 ECMA 的官网,很多教程中也会提到 ECMA。直接搜索也是可以找到的。顺着这个线索找到官网。进入后如下图。

26-ecma

首页的文字说明,大致了介绍了这个组织是做什么,主要负责制定那些规范,由什么组成。可以发现 JavaScript 的标准也列在了那里。点击进入后,页面里面介绍了这个项目主要干什么,负责这个项目的是 TC39-Royalty Free Task Group,中文就是第39技术委员会-免版税任务组,而且是可点击的状态,进入后就是这个任务组的相关介绍页面。

26-tc39

在介绍中,可以发现不少的信息,比如参与的成员有哪些,负责的范围有哪些。在 Programme of work 的第一条就说明负责维护 JavaScript 编程语言的规范,还提供了访问的链接 ECMA-262

26-ecma-262

页面提供了不少的链接,看内容描述,可以得知相关进度会在 github 上展示,并提供了链接:https://github.com/tc39/ecma262#ecmascript。

26-ecma-github

进入后发现各种状态的提议都有列出,相关的进度也会在这里进行更新。至此相关的提议状态也找到了。

提议的几个状态

所有的提议是要经过审核,有的可能被取消、拒绝等等,但在 github 上并没有用明显的方式标记出来,例如用 labels 的方式,只是分了阶段。在 Inactive Proposals 里面,有句描述:

Inactive proposals are proposals that at one point were presented to the committee but were subsequently abandoned, withdrawn, or rejected.

从这句话中,可以理解为提议的状态可能有:Abandoned(放弃)、Withdrawn(撤销)、Rejected(拒绝)。再看下面列出的表格,发现里面有的提议标出了不采用的理由。但状态比描述中多了 2 种:Postponed(推迟)、Inactive(未采用)。还有一种情况是 Demoted(降级),在 proposal-static-class-features 中的描述如下:

26-demoted

可以发现,虽然没有明确的提出,从理解上也算是一种状态。最后将状态简单列举一下:

  • Abandoned
  • Withdrawn
  • Rejected
  • Postponed
  • Inactive
  • Demoted

会议记录

如果想要知道更加详细的信息,例如为什么会拒绝这个提议,目前的提议具体进展怎么样,可以去看相关的讨论和会议记录。有个专门记录这些的地方——ECMAScript Discussion Archives。规矩都是人定的,有讨论当然就会出现分歧。有些时候看会议记录,会发现很“人性化”的一面,例如下面的记录:

26-interest

参考资料