2016-05-15 11 views
1

にはどうすればES6にコンパイルしますか?

export default User 
import socket from "./socket" 

このES6 haXeので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 
+0

downvoteする必要はありません!私は "import"をコンパイルする必要がありますが、型なしを試しましたが、うまくいきませんでした。 – simo

+0

Haxeコンパイラはhaxeコードのみをコンパイルしますが、javascriptをコンパイルすることはできません。 – stroncium

答えて

1

Ember 2.0/Ember CLIと統合するために、私は実際には以前と同じニーズがありました。 きめ細かな制御がありませんので、あなたは内蔵のjsの発電機のグッズを失うので、不格好 - カスタムJS発電機を構築する)

1:私は唯一の選択肢はどちらかにある、純粋haXeので道を見つけることができませんでしたどの機能を使用するかは、何でもかまいません。つまり、ASTの特定の式/タイプの出力を変更できるだけでなく、組み込みジェネレータを参照したり、必要に応じて委譲したりすることはできません。 ファイルを解析して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カスタムジェネレータAPIのより詳細なフックを持っていればよかったです。

リファレンスとして、この問題についてのHaxeメーリングリストへの私のメッセージは、https://groups.google.com/forum/#!topic/haxelang/jSTkkaNgfB8です。

+0

__UPDATE:__この執筆時点では、ES6クラスをサポートするカスタムhaxejsジェネレータがあります。 https://github.com/kevinresol/hxgenjsを確認します。 – FullOfCaffeine

関連する問題