4

这里找到的 ES6 兼容性表来看

大多数 shims 和 transpiler 只实现了 70% 以下的 ES6 功能,所以当 Chrome/Safari 和 Firefox 现在默认支持 Javascript ES6 时,为什么还要有人使用 Babel/Traceur。

我的意思是,如果我是 say Babel 的开发人员,那么确保在竞争之前实现 ES6 甚至 ES7 功能肯定是你的第一要务。

或者我在这里错过了什么?

4

2 回答 2

4

大多数 shims 和 transpiler 只实现了 70% 以下的 ES6 功能,那么当 Chrome/Safari 和 Firefox 现在默认支持 Javascript ES6 时,为什么还要有人使用 Babel/Traceur。

因为我的一些应用程序仍然需要支持到 IE9(我们终于让您的客户将标准提高到 IE9)。并不是因为我们的客户缺乏知识,而是因为那个平台的用户实际上在使用这个浏览器。

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

“我在这里错过了什么吗?” -是的。您错过了数十年来关于动态和静态类型的相对优点的争论。开始阅读。——贾里德·史密斯

@Daniel,您的任何编辑都没有改变 Jared 在这一点上所做的任何事情。

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

我的意思是,如果我是 say Babel 的开发人员,那么确保在竞争之前实现 ES6 甚至 ES7 功能肯定是你的第一要务。

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

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

于 2017-02-07T17:35:25.230 回答
3

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

所以在 ECMAScript 6 是新的并且浏览器不支持太多或任何它的早期,已经开发了转译器,让您在仅支持“旧版”ECMAScript 功能的浏览器中使用 ECMAScript 的新语言功能。

尽管最新的浏览器现在支持大部分或全部新功能,但几乎没有什么变化。您仍然会使用转译器来支持不支持这些功能的那些相同的先前实现。

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

于 2017-02-07T17:34:52.473 回答