编译成 ES6?
Compiling to 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
不久前我也有同样的需求,以便与 Ember 2.0/Ember CLI 集成。我没有找到使用纯 Haxe 的方法,唯一的选择是:
1) 构建自定义 js 生成器 - 笨拙,因为你失去了内置 js 生成器的优点,因为 没有 精细控制你使用的功能 - 全部或什么都没有——也就是说,你不能只改变 AST 中某个 expression/type 的输出,你不能引用内置生成器并在需要时委托给它。
2) 解析 hx
文件的预处理器,删除 ES6 代码,编译文件,然后添加回 ES6 代码,虽然笨重,但可能会工作。
3) 破解编译器的 OCAML 代码并添加某种 class 级别的元数据标记,例如 @:ESImport("import {foo} from bar")
、@:ESExport("export default foo")
。这也可以通过#1(自定义 js 生成)来完成,但是通过修改 OCaml 代码,您可以保留内置的 js 生成。
我暂时放弃了将 Haxe 代码与 ES6 集成,我希望 Haxe 对 ES6(即 ES2016 生成器)有更好的内置支持,或者为 JS 自定义生成器提供更细粒度的挂钩 API .
作为参考,这是我发给 Haxe 邮件列表的关于这个问题的消息:https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8。
从 4.0.0-rc.2 开始,Haxe 现在支持使用 -D je-es=6
标志生成 ES6 类。
有了这个,这个例子...
class Main {
static function main() {
trace("Hello World");
}
}
...生成以下 JavaScript 代码:
// Generated by Haxe 4.0.0-rc.2+43ed6c9b4
(function ($global) { "use strict";
class Main {
static main() {
console.log("source/Main.hx:3:","Hello World");
}
}
Main.main();
})({});
//# sourceMappingURL=run.js.map
计划进一步支持 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
不久前我也有同样的需求,以便与 Ember 2.0/Ember CLI 集成。我没有找到使用纯 Haxe 的方法,唯一的选择是:
1) 构建自定义 js 生成器 - 笨拙,因为你失去了内置 js 生成器的优点,因为 没有 精细控制你使用的功能 - 全部或什么都没有——也就是说,你不能只改变 AST 中某个 expression/type 的输出,你不能引用内置生成器并在需要时委托给它。
2) 解析 hx
文件的预处理器,删除 ES6 代码,编译文件,然后添加回 ES6 代码,虽然笨重,但可能会工作。
3) 破解编译器的 OCAML 代码并添加某种 class 级别的元数据标记,例如 @:ESImport("import {foo} from bar")
、@:ESExport("export default foo")
。这也可以通过#1(自定义 js 生成)来完成,但是通过修改 OCaml 代码,您可以保留内置的 js 生成。
我暂时放弃了将 Haxe 代码与 ES6 集成,我希望 Haxe 对 ES6(即 ES2016 生成器)有更好的内置支持,或者为 JS 自定义生成器提供更细粒度的挂钩 API .
作为参考,这是我发给 Haxe 邮件列表的关于这个问题的消息:https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8。
从 4.0.0-rc.2 开始,Haxe 现在支持使用 -D je-es=6
标志生成 ES6 类。
有了这个,这个例子...
class Main {
static function main() {
trace("Hello World");
}
}
...生成以下 JavaScript 代码:
// Generated by Haxe 4.0.0-rc.2+43ed6c9b4
(function ($global) { "use strict";
class Main {
static main() {
console.log("source/Main.hx:3:","Hello World");
}
}
Main.main();
})({});
//# sourceMappingURL=run.js.map
计划进一步支持 ES6: