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阶段,但最终被撤回。


目录
相关文章
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
前端开发 iOS开发
canvas生成图片模糊的解决方案
canvas生成图片模糊的解决方案
2227 1
canvas生成图片模糊的解决方案
|
5月前
|
SQL 数据可视化 关系型数据库
Quick BI 测评报告
Quick BI是阿里云推出的零代码可视化分析工具,适合个人开发者与小微团队使用。其核心优势在于轻量化启动(免费试用+按量付费)、多源接入(MySQL、MongoDB等)及敏捷分析能力(拖拽式仪表板)。实测显示,它支持智能CSV解析、语法高亮SQL编辑器和25+基础图表类型,具备图表联动交互功能。尽管缺少3D地图和自定义JS插件支持,但凭借低学习成本、OpenAPI扩展性以及移动端报表查看功能,Quick BI在个人项目展示、团队协作和轻量级数据分析中表现出色。不过,复杂计算需依赖SQL,移动端编辑和PDF导出存在局限性。
224 3
|
移动开发 前端开发 JavaScript
js 简单图片取色器
基于 JavaScript(js) 的简单的图片颜色识别
1556 0
js 简单图片取色器
|
前端开发 API 对象存储
FileSaver.js源码学习,纯前端实现文件下载
FileSaver.js源码学习,纯前端实现文件下载
1101 0
|
编解码 JavaScript 前端开发
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
641 0
|
图形学 开发者
【Unity光照艺术手册】掌握这些技巧,让你的游戏场景瞬间提升档次:从基础光源到全局光照,打造24小时不间断的视觉盛宴——如何运用代码与烘焙创造逼真光影效果全解析
【8月更文挑战第31天】在Unity中,合理的光照与阴影设置对于打造逼真环境至关重要。本文介绍Unity支持的多种光源类型,如定向光、点光源、聚光灯等,并通过具体示例展示如何使用着色器和脚本控制光照强度,模拟不同时间段的光照变化。此外,还介绍了动态和静态阴影、全局光照及光照探针等高级功能,帮助开发者创造丰富多样的光影效果,提升游戏沉浸感。
494 0
|
安全 网络安全 数据安全/隐私保护
非对称加密的日常实践应用:以RSA加密为例
**RSA加密简介与Python实现** RSA,一种非对称加密技术,基于大数因子分解,用于数据加密和完整性保护。本文介绍了RSA基本原理,包括密钥生成(选取大质数p和q,计算n和φ(n),选择公钥指数e和私钥指数d),并展示了使用Python `cryptography` 库生成密钥对、加密和解密消息的代码示例。通过这些步骤,读者可理解RSA在网络安全中的应用,如HTTPS和数字签名。
869 3
|
JavaScript 前端开发 编译器
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
382 0
|
SQL 关系型数据库 MySQL
mysql-proxy数据库中间件架构 | 架构师之路
mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。
1786 82