我的问题是:babel-preset-stage-0
,babel-preset-stage-1
,babel-preset-stage-2
和babel-preset-stage-3
之间的区别是什么,当我们选择时,最佳选择是什么?用ES6
开发?
答案 0 :(得分:89)
Babel的阶段预设等同于TC39 Process以及每个提案的不同状态,以便进行潜在的语言更改。它们包括该阶段所有建议更改的实现和polyfill。
目前Stage-0
中的任何内容都是稻草人,不是 ES6。它是未来的Javascript,并且绝对不确定它是否会成为任何官方的ECMAScript规范。
请不要只设置为stage-0
,这样就可以在不理解其后果的情况下工作。
仅包含ES6功能的Babel Preset是preset-es2015
答案 1 :(得分:47)
主要由其他答案详述。第4阶段是最稳定的,第0阶段是最危险的。以下答案和文档中的5个阶段的高级别细分。我正在添加这个,因为当我谈到这一点时,我期待每个阶段的更高层次的细分:
<小时/> 第4阶段:已完成
准备加入ECMAScript Standard,已通过测试并将成为下一版本的一部分
<小时/> 第3阶段:候选人
包含完整的规范文本,并包含大部分经过测试并提供反馈的插件。解决方案已完成,所有进一步的更改均基于实施经验。
<小时/> 第2阶段:草稿
尽可能完成对插件的进一步支持。对这些要求的要求主要是在途中只有增量变化。语义和api预计将完成。它很可能成为规范的一部分。
<小时/> 第1阶段:提案 已经发现并选择在此阶段进行检查的概念主要是聚合填充和演示。
<小时/> 第0阶段:稻草人 这个名字让我轻笑,根据TC-39它没有任何形式的约束,但鉴于上下文,它是未被选择被跟踪或检查的概念的类别。
每个级别都是包容性的,而4个包含3个包括2个等等......我希望这个总结可以帮助将来的某个人。
答案 2 :(得分:15)
这些阶段代表了TC39流程定义的阶段,这些阶段将疯狂但有用的想法的特征运用到公认的标准中,例如ES6。这个过程需要一些时间,因为每个角落的案例都必须进行讨论,思考,测试,填充,讨论等等。也就是说,它是一个标准组织。目标是说&#34; ES6&#34;将有一个完整而完整的含义,就像说&#34; ES5&#34;确实
在实践中,您的项目要求可能包括从保持到尝试和真实到使用哦,如此模糊,语言功能。您可能想要从这些链接开始:
The TC39 Process Overview:这包括一个漂亮的图表,说明阶段的意义以及功能如何从一个阶段进展到阶段。下面是TC39的概述。
The Active Proposals:快速概述某些提案所处的阶段。它还包括指向已完成,无效和阶段0提案的链接。今天,2017年4月,Public Class Fields处于第2阶段,这意味着它已被精确描述并且已经分配了审阅者,但未经过全面审核。
The Babel Preset Package for Stage 3:所有第3阶段提案的插件页面,包含指向Git和NPM的链接。基本上,这个插件引入了一系列软件包,理论上这些软件包填充了TC39第3阶段的当前提案。实际上,可能会出现错误。此外,您可以找到类似的相似内容,它链接到Stage 2及以下的插件页面。这些页面将链接到包含第3阶段提案和不太稳定的提案的包。
Babel Preset 'env':此Babel预设支持已完成的提案,选择在已知环境中支持这些功能所需的正确包。例如,本地node
可执行文件比旧版浏览器需要更少的插件。可以想到第4阶段&#39;支持已批准的未来功能的插件。
总之,如果您使用它们,您只需要处理这些预发布功能。如果您确实需要使用它们,请选择具有您所需要的最高数量的舞台。如果您只是想要一个具有疯狂功能的玩具装置来讨论水冷却器,请继续前进并抓住第0阶段。
答案 3 :(得分:3)
这是了解的最佳起点。 What are babel presets
链接摘录:
阶段0-Strawman:只是一个想法,可能是Babel插件。
第1阶段-提案:值得研究。
第2阶段-草案:初始规范。
第3阶段-候选:完整的规范和初始浏览器实施。
第4阶段-已完成:将添加到下一个年度版本中
答案 4 :(得分:3)
最初的问题是“ babel-preset-stage-0,babel-preset-stage-1,babel-preset-stage-2和babel-preset-stage-3有什么区别”,回答聚焦很奇怪。关于“ TC39阶段0,阶段1 ..术语之间的差异”的投票,而唯一相关(尽管不准确)的投票被否决。要从babel网站引用:
Babel预设是可共享的插件列表。
官方的Babel Stage预设跟踪了TC39过渡过程, JavaScript中的新语法建议。
每个预设(例如Stage-3,stage-2等)都包含了所有的插件 该特定阶段及其上方的阶段。例如,第二阶段 包括第三阶段,依此类推。
核心思想是“之上的思想”。我没有回答下半部分,因为上面的回答在那部分非常好。
答案 5 :(得分:-16)
我知道了。你们可以参考https://babeljs.io/docs/plugins/preset-stage-0/
简而言之,preset-stage-0
包含preset-stage-1
具有的所有功能,而preset-stage-1
包含preset-stage-2
具有的所有功能等等......
较低的数字更强大。在您的项目中,如果您不想解决问题,只需设置stage-0
...