2016-05-15 83 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