ECMAScript:Harmony/ES6到JavaScript编译器

Ray*_*nos 43 javascript compiler-construction ecmascript-harmony

在阅读了彼得关于JavaScript的文章后,我注意到了

Brendan Eich表示,Harmony的目标之一是成为JavaScript编译器的更好目标.

目前有两个流行的编译器有一些模糊的ES:符合Harmony:

虽然CoffeeScript有一些合规性,但它并不是设计成ES:Harmony编译器,所以它对此没有用.

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

由于目标是将ES6编译为ES3,因此还需要支持ES5功能(并且可能需要支持将ES5编译为ES3或ES6至ES3).

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

我在Traceur邮件列表上留下了一个问题.

这种编译器的目的是向后兼容ES3.在ES3中没有完全模拟ES5和ES6.

Mik*_*uel 14

(以下无耻但相关的插头)

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

像Traceur一样,Caja团队的成员也是TC39(ES Harmony的委员会)的成员.

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

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


ora*_*rad 11

查看TypeScript,这是基于ES6的微软新语言.

  • 适用于许多结构化ES6功能,如果你丢失几个垫片缺少ES6方法和对象(因为TypeScript几乎不添加运行时存在),这是非常好的. (3认同)

kyb*_*kos 8

Continuum已经实现了大部分相关功能,应该在es3浏览器中运行(比如旧的IE).