gpt4 book ai didi

javascript - Traceur 在多大程度上编译为 IE8 兼容的 Javascript?

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:39 25 4
gpt4 key购买 nike

我正在从事的一个项目将 IE8 作为硬性要求。我们希望潜在地使用 Traceur 来开始使用 ES6 的一些改进语法,但我知道 it produces ES5 ,即 not supported by IE8 .鉴于我可以用 es5shim 修补 IE8 ,这Traceur-supported ES6 features使用安全吗?

更具体地说,我想知道哪些功能映射总是直接映射到完全兼容的代码(大概是大部分糖分),哪些功能由于 shim 的限制而在行为上存在不匹配,以及哪些功能完全不可用

最佳答案

总结:如果你需要 IE8 支持,请不要使用 Traceur

不可能在 IE8 中获得对 Traceur 编译代码的完全支持,因为它有 very poor ES5 compatibility ,这cannot be patched completely even with known polyfills like es5shim .

不过,您可能会得到一些 Traceur 编译的代码以在 IE 8 中运行,但据我所知,这是一个相当未开发的空间。我所知道的对此类尝试的唯一引用之一是 traceur 的 github 存储库中关于 "old IE support" 的未解决问题.

从工程的 Angular 来看,我认为在生产中使用 Traceur+ES5 shim 组合是一个非常糟糕的主意。您不仅需要处理从 ES6->ES5 引发的潜在问题,还需要解决由于有缺陷的 ES5 polyfill 而导致的错误,这两种问题都很可能发生。


将 Traceur 与各种 polyfill 和补丁结合使用也会导致 JavaScript 代码非常臃肿。举个例子,让我们考虑简单的 ES6 生成器和 ES5 Array.prototype.each 的用法:

function* items() {yield new Array(1, 2, 3);}

for (item of items()) {
item.every(function(elem, index, arr) {
console.log(item);
});
}

如果我们想在 IE8 中运行它,我们首先需要使用 Traceur 将其编译为 ES5,然后为 Array.prototype.each 应用一个 polyfill。 The resulting IE8-compliant code in this case is roughly around 50 lines of code .

关于javascript - Traceur 在多大程度上编译为 IE8 兼容的 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com