ES 五个阶段

简介: ES 五个阶段

1ECMAScript功能的TC39过程

本章解释了所谓TC39工艺,它控制ECMAScript功能的设计方式,从ECMAScript 2016(ES7)开始。

1.1谁设计ECMAScript?

答:TC39(技术委员会39)。

TC39型是开发JavaScript的委员会。它的成员是公司(除其他外,所有主要的浏览器供应商)。TC39定期开会其会议由成员派来的代表和受邀专家出席。会议记录是在线可用让你了解TC39是如何工作的。

偶尔(甚至在本书中),你会看到这个词TC39成员指的是人类。那么它的意思是:TC39成员公司派出的代表。

值得注意的是,TC39是以协商一致的方式运作的:决策要求绝大多数人同意,没有人强烈反对,可以否决。对于许多成员来说,协议导致了真正的义务(他们必须实现特性等)。

1.2ECMAScript是如何设计的?

1.2.1条问题:ECMAScript 2015(ES6)版本太大

ECMAScript的最新版本ES6是一个大型的版本,它在ES5之后几乎6年(2009年12月与2015年6月)被标准化。两个版本之间的时间间隔有两个主要问题:

比发行版更早准备好的特性必须等到发行版完成。
需要很长时间才能完成的特性面临着打包的压力,因为将它们推迟到下一个版本意味着要等待很长时间。这些特性也可能延迟发布。

因此,从EcmaScript2016(ES7)开始,发布将更加频繁,结果会更小。每年将有一个版本,它将包含所有的功能,在每年的最后期限完成。

1.2.2条解决方案:TC39工艺

ECMAScript特性的每个建议都要经过以下步骤成熟阶段,从阶段0开始。从一个阶段到下一个阶段的进展必须得到TC39的批准。

1.2.2.1第0阶段:斯特劳曼

这是怎么一回事?一种提交演化ECMAScript想法的自由形式方式。提交资料必须来自TC39会员或非会员已注册为TC39贡献者.

需要什么?该文件必须在TC39会议上进行审查(来源)然后添加到包含第0阶段建议的页面.

1.2.2.2第一阶段:提案

这是怎么一回事?对该功能的正式提议。

需要什么?所谓的冠军必须确定谁对提案负责。冠军或共同冠军必须是TC39的成员(来源). 提案所解决的问题必须用散文来描述。解决方案必须通过示例、API以及语义和算法的讨论来描述。最后,必须确定提案的潜在障碍,例如与其他功能的互动和实施方面的挑战。实施方面,需要polyfill和演示。

下一步是什么?通过接受第1阶段的提案,TC39表示愿意审查、讨论并为提案作出贡献。今后,该提案预计会有重大变化。

1.2.2.3第二阶段:草稿

这是怎么一回事?规范中的第一个版本。在这一点上,该特性最终可能包含在标准中。

需要什么?提案现在还必须对特性的语法和语义有一个正式的描述(使用ECMAScript规范的形式语言)。描述应尽可能完整,但可以包含TODO和占位符。这个特性需要两个实验性的实现,但是其中一个可以在transpiler中,比如Babel。

下一步是什么?从现在开始,预计只会有增量变化。

1.2.2.4条第三阶段:候选人

这是怎么一回事?该提案已基本完成,现在需要来自实现和用户的反馈,以进一步推进。

需要什么?规范文本必须完整。指定的审阅者(由TC39指定,而不是由champion指定)和ECMAScript规范编辑器必须在规范文本上签名。必须至少有两个符合规范的实现(默认情况下不必启用)。

下一步是什么?从此以后,只应对实现及其使用引起的关键问题进行更改。

1.2.2.5第4阶段完成

这是怎么一回事?建议已准备好纳入标准。

需要什么?在提案进入这一阶段之前,需要以下几点:

测试262验收测试(大致是用JavaScript编写的语言特性的单元测试)。
两个通过测试的规范兼容的发布实现。
具有丰富的实施实践经验。
ECMAScript规范编辑器必须在规范文本上签名。

下一步是什么?该建议将尽快包含在ECMAScript规范中。当规范作为一个标准通过每年的批准时,提案也会作为其中的一部分得到批准。

1.3不要称它们为ECMAScript 20xx特性

一旦达到标准,你就可以看到它的一个阶段,你就可以看到它的功能了。那么它很可能会包含在下一个ECMAScript版本中,但也不是百分之百确定(可能需要更长的时间)。因此,你不能再称提案为“ES7功能”或“ES2016功能”。因此,我最喜欢的两种撰写文章和博客文章标题的方式是:

“ECMAScript建议:foo特性”。这篇文章的开头提到了提案的阶段。
“ES.stage2:foo功能”

如果一个建议处于第4阶段,我可以将其称为ES20xx特性,但最安全的做法是等到spec编辑器确认它将包含在哪个版本中。对象。观察是ECMAScript提案的一个例子,该提案一直进行到第2阶段,但最终被撤回。


目录
相关文章
|
6月前
|
JavaScript 小程序 Java
ES6使用实践总结
ES6使用实践总结
45 0
|
7天前
|
JavaScript 前端开发 开发者
ES6模块系统
ES6 模块系统是 JavaScript 发展中的一个重要里程碑,它为开发者提供了更强大、更灵活和更高效的编程方式。你在使用模块系统时,是否遇到过一些具体的问题或有一些独特的见解呢?
13 1
|
2月前
|
自然语言处理 JavaScript 前端开发
ES6 函数及拓展
ES6 函数及拓展
108 58
|
2月前
|
存储 JavaScript 前端开发
[JS] ES Modules的运作原理
【9月更文挑战第16天】ES Modules(ECMAScript Modules)是 JavaScript 中的一种模块化开发规范,适用于浏览器和 Node.js 环境。它通过 `export` 和 `import` 关键字实现模块的导出与导入。模块定义清晰,便于维护和测试。JavaScript 引擎会在执行前进行静态分析,确保模块按需加载,并处理循环依赖。ES Modules 支持静态类型检查,现代浏览器已原生支持,还提供动态导入功能,增强了代码的灵活性和性能。这一规范显著提升了代码的组织和管理效率。
|
6月前
|
前端开发
es6的一些方法
es6的一些方法
36 0
|
存储 机器学习/深度学习 数据采集
基于ES在慢病项目中的应用
ES在慢性病管理项目中的应用
255 29
|
存储 JSON 安全
es学习笔记1-es概念
es学习笔记1-es概念
86 0
|
存储 JSON 自然语言处理
ES基础
ES基础
486 0
|
存储 JavaScript 前端开发
es6基础(1)
es6基础(1)
124 0
es6基础(1)
|
JavaScript 前端开发 网络架构
【ES6】函数的拓展
【ES6】函数的拓展