为什么在Chrome和其他浏览器中更多支持ES6时使用转发器/垫片?

时间:2017-02-07 17:10:36

标签: javascript ecmascript-6 babeljs traceur

根据ES6兼容性表格here

判断

大多数垫片和转发器只能实现70%以下的ES6功能,所以为什么有人会使用Babel / Traceur,默认情况下,现在Chrome / Safari和Firefox中几乎支持Javascript ES6。

我的意思是,如果我是Babel的开发人员 - 肯定在您的竞争对手之前确保您已经实施ES6甚至ES7功能将是您的首要任务。

或者我在这里遗漏了什么?

2 个答案:

答案 0 :(得分:3)

通常,存在转换器将为一个环境编写的代码转换为为不同环境编写的代码。这可以用于在完全不同的语言之间转换代码,或者仅在不同版本的语言之间转换代码。

早在ECMAScript 6成为新版本并且浏览器不支持其中的大部分或任何内容时,就开发了一些转换器,让您在仅支持&#的浏览器中使用ECMAScript的新语言功能34;遗留" ECMAScript功能。

即使最新的浏览器现在支持大多数或所有新功能,但几乎没有变化。您仍然使用转换器来支持那些不支持这些功能的先前实现。

在某些时候,开发人员可能会放弃对某些浏览器的支持,这意味着他们可能会停止转换代码。这个决定将由不同的人做出不同的决定,因此转发器将在未来几年继续使用。

答案 1 :(得分:3)

  

大多数垫片和转发器只能实现70%以下的ES6功能,所以为什么有人会使用Babel / Traceur,默认情况下,现在Chrome / Safari和Firefox中几乎支持Javascript ES6。

因为我的一些应用程序仍然需要支持IE9(我们终于让你的客户提升吧IE9)。而且这不是因为我们的客户缺乏知识,而是因为该平台的用户实际使用此浏览器。

特别是当您的用户是公司(或其员工)时,IE(甚至不是Edge)通常仍然是标准。

  “我在这里错过了一些东西吗?” -是。你错过了几十年关于动态和静态类型的相对优点的论点。去阅读。 - 贾里德史密斯

@Daniel,你的编辑在Jared的这一点上没有做任何改变。

JS可能永远不会提供静态类型检查或编译时错误;因为这是编写和发布代码的一种截然不同的方法。

  

我的意思是,如果我是Babel的开发人员 - 肯定在您的竞争对手之前确保您已经实施ES6甚至ES7功能将是您的首要任务。

是的,我喜欢使用ES6并在需要时使用转换器,但我仍然认为ES7功能不稳定且正在进行中。如果最终的实现与当前版本不同,我将不得不重新访问并检查我将使用它的每个项目。实际在生产中使用它们的不确定性太大,所以......
(作为Babels的用户之一)实际上并不关心一个转换器或另一个已经支持这些最新功能,除非已发布最终标准。

虽然有时候我喜欢玩这些新功能,但想看看它们的好处,可能性,限制和问题,以及如何将它们转换成当前的代码。