2016-05-15 66 views
1

我将如何编译编译为ES6?

export default User 
import socket from "./socket" 

此ES6 javascript函数与haXe的?

import socket from "./socket" 
let User = { 
    init(socket, element) { 
     if (!element) { 
      return 
     } 
     let userId = element.getAttribute("data-id") 
     userId= Math.random() 
     socket.connect() 
     this.onReady(userId, socket) 
    } 
} 
export default User 
+0

无需downvote!我需要编译“导入”,我尝试了无类型,但它没有工作.. – simo

+0

Haxe编译器只编译haxe代码,你不能编译JavaScript。 – stroncium

回答

1

我以前实际上有同样的需求,为了与Ember 2.0/Ember CLI集成。我没有找到纯HAXE的方式,唯一的选择是要么:

1)建立一个自定义的JS发电机 - 笨重,因为你失去了内置JS生成的东西,因为有没有细粒度控制关于你使用什么特性 - 全是或者全无 - 即你不仅可以改变AST中某个表达式/类型的输出,而且你不能在需要时引用内置的生成器并委托它。

2)解析hx文件,删除ES6代码,编译文件,并添加ES6代码的预处理器,也很笨重,但可能工作。 3)破解编译器的OCAML代码,并添加某种类级别的元数据标签,如@:ESImport("import {foo} from bar"),@:ESExport("export default foo")。这也可以用#1(自定义js gen)完成,但通过修改OCaml代码,您可以保留内置的js gen。

现在我已经放弃了将Haxe代码与ES6集成,我希望Haxe对JS自定义生成器API有更好的ES6内部支持(即ES2016生成器)或更细粒度的挂钩。

作为参考,以下是我向Haxe邮件列表发送的关于此问题的消息:https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8

+0

__UPDATE:__在写这篇文章的时候,有一个自定义的haxejs生成器,它支持ES6类。检查https://github.com/kevinresol/hxgenjs。 – FullOfCaffeine