gpt4 book ai didi

javascript - ECMAScript :Harmony/ES6 to JavaScript compiler

转载 作者:行者123 更新时间:2023-12-02 16:21:56 25 4
gpt4 key购买 nike

阅读后Peter's article on JavaScript我注意到

Brendan Eich stated that one the goals for Harmony is to be a better target for to-JavaScript compilers.

目前有两种流行的编译器,但有些模糊ES:Harmony合规性:

尽管 CoffeeScript 具有一定的合规性,但它并不是设计为 ES:Harmony 编译器,因此它对此没有用处。

Tracuer 似乎更严格地遵守 ES:Harmony 规范,但我不知道它是否打算成为一个完整的 ES:Harmony 编译器。

由于目标是将 ES6 编译为 ES3,因此还需要支持 ES5 功能(可能还需要切换是否将 ES5 编译为 ES3 或将 ES6 编译为 ES3)。

  1. 目前是否还有其他项目旨在创建完整的 ES:Harmony 到 ES3 编译器?
  2. 知道标准还很年轻/不稳定/不断变化,开始编写这样的编译器是否明智?
  3. 目前有 ES5 -> ES3 编译器吗?

我在 Traceur mailing list 上留下了一个问题.

这样一个编译器的目标是向后兼容 ES3。 ES3 中没有完全模拟 ES5 和 ES6。

最佳答案

(下面无耻但相关的插件)

Caja正在通过 ES5/3 重新设计其 ES5 支持并将为 ES 和谐做同样的事情。因此,我们的结构将实现为 ES3 的 Harmony 层,可以跳过该层以实现真正的 Harmony 实现,然后是一个可分离的加载器,保留与 caja 相关的安全属性。

与 Traceur 一样,Caja 团队的成员也是 TC39(定义 ES Harmony 的委员会)的成员。

我不知道 Coffeescript 的计划,但在讨论 Harmony 模块时提到过。 Module loaders可能能够拦截加载的源代码(通过 eval hooks )并在模块初始化之前重写它,因此如果模块是用 CoffeeScript 编写的,则可以在初始化时调用运行时 CoffeeScript 重写器。这将允许应用程序由用多种语言编写的模块组成,并在加载时编译为 Harmony。

需要注意的一点是,并不是 Harmony 中的所有内容都可以通过翻译轻松实现。例如,实现weak maps正确地需要在 JavaScript 中实现你自己的垃圾收集器,即使你这样做了,你也可能只是重新引入宿主对象/ native 对象循环问题。

关于javascript - ECMAScript :Harmony/ES6 to JavaScript compiler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23155391/

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