编译成ES6?

问题描述 投票:2回答:2

我该如何编译?

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
haxe
2个回答
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能够更好地支持ES6(即ES2016生成器)或JS Custom Generator API的更细粒度的钩子。

作为参考,这是我向Haxe邮件列表发出的关于这个问题的信息:https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8


0
投票

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支持:

© www.soinside.com 2019 - 2024. All rights reserved.