我将如何编译
export default User
import socket from "./socket"
这个带有 haxe 的 ES6 javascript 函数?
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
最佳答案
实际上,我不久前也有同样的需求,以便与 Ember 2.0/Ember CLI 集成。我没有找到使用纯 Haxe 的方法,唯一的选择是:
1) 构建自定义 js 生成器 - 笨拙,因为你失去了内置 js 生成器的优点,因为对你使用的功能没有粒度控制 - 全有或全无 - 即你可以不要只更改 AST 中某个表达式/类型的输出,也不能在需要时引用内置生成器并委托(delegate)给它。
2) 解析hx
文件、删除ES6 代码、编译文件并添加ES6 代码的预处理器,同样笨拙,但可能会工作。
3) 破解编译器的 OCAML 代码并添加某种类级别的元数据标记,例如 @:ESImport("import {foo} from bar")
, @ :ESExport("导出默认 foo")
。这也可以通过#1(自定义 js 生成)来完成,但是通过修改 OCaml 代码,您可以保留内置的 js 生成。
我现在已经放弃将 Haxe 代码与 ES6 集成,我希望 Haxe 对 ES6(即 ES2016 生成器)有更好的内置支持,或者为 JS 自定义生成器 API 提供更细粒度的 Hook 。
作为引用,这是我发给 Haxe 邮件列表的关于这个问题的消息:https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8 .
关于haxe - 编译成 ES6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237323/