haxe - 编译成 ES6?

标签 haxe

我将如何编译

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/

相关文章:

package - 导入类时找不到类异常 : Haxe (With OpenFL + Flixel libraries)

generics - 扩展 Iterable 的 Haxe 接口(interface)

sockets - 所有平台上的 Haxe 服务器-客户端交换

haxe - 在 haxe 中,如何从该类的静态方法中获取该类的名称?

haxe - 有没有办法在 Haxe 中将类和方法声明为抽象?

haxe - 使用单个脚本测试多种 Haxe 目标语言

scala - haxe 中的高级模式匹配(与 scala 示例相比)

javascript - 谦虚的 Haxe,在非 haxe 友好的目标项目中自动合并 haxe 的方法?

xml - Haxe 与 XPath 有友谊吗?

java - Haxe:构建到 android 目标时崩溃