web-dev-qa-db-ja.com

ECMAScript:Harmony / ES6からJavaScriptコンパイラ

読んだ後 JavaScriptに関するピーターの記事 気づいた

Brendan Eichは、Harmonyの目標の1つは、JavaScriptへのコンパイラのより良いターゲットになることだと述べました。

現在、漠然とした ES:Harmony に準拠した2つの一般的なコンパイラがあります。

CoffeeScriptはいくつかのコンプライアンスを備えていますが、ES:Harmonyコンパイラーとして設計されていないため、この目的には役立ちません。

TracuerはES:Harmony仕様に厳密に準拠しているようですが、完全なES:Harmonyコンパイラになるつもりかどうかはわかりません。

ES6をES3にコンパイルすることを目的としているため、ES5機能もサポートする必要があります(ES5をES3にコンパイルするか、ES6をES3にコンパイルするかを切り替えるスイッチ)。

  1. 現在、ES:HarmonyからES3への完全なコンパイラを作成することを目的とした他のプロジェクトはありますか?
  2. 標準が新しく、不安定で、変化していることを知って、そのようなコンパイラを書き始めるのは賢明ですか?.
  3. 現在、ES5-> ES3コンパイラはありますか?

Traceurメーリングリスト に質問を残しました。

このようなコンパイラの目的は、ES3との下位互換性です。 ES3でのES5およびES6の完全なエミュレーションではありません。

43
Raynos

Continuum は関連する機能のほとんどを実装しており、es3ブラウザー(古いIEなど)で実行する必要があります。

8
kybernetikos

(恥知らずだが関連するプラグインは以下)

CajaES5/ を介してES5のサポートを作り直しており、ESの調和についても同じです。したがって、私たちの構造は、ハーモニーからES3へのレイヤーとして実装され、実際のハーモニーの実装ではスキップできます。次に、cajaに関連するセキュリティプロパティを保持する分離可能なローダーです。

Traceurと同様に、CajaチームのメンバーはTC39(ES Harmonyを定義する委員会)の一部です。

Coffeescriptの計画については知りませんが、Harmonyモジュールの議論中に言及されました。 Module loaders は、ロードされたソースコードをインターセプトし( eval hooks を介して)、モジュールの初期化前に書き直すことができるため、モジュールがCoffeeScriptで記述されている場合、ランタイムのCoffeeScript初期化時にリライタが呼び出される可能性があります。これにより、アプリを複数の言語で記述されたモジュールで構成し、ロード時にコンパイルしてHarmonyにすることができます。

注意すべきことの1つは、Harmonyのすべてが翻訳によって簡単に実装できるわけではないということです。たとえば、 weak maps を正しく実装するには、JavaScriptに独自のガベージコレクターを実装する必要があります。その場合でも、おそらくHostオブジェクト/ネイティブオブジェクトサイクルの問題を再導入するだけです。

14
Mike Samuel

チェックアウト TypeScript 、ES6に基づくマイクロソフトの新しい言語。

11
orad

タイピングの時点では、現在 Babel があります。多くの異なるビルドツール/システムと統合し、レガシーブラウザーをサポートするためにES6 +をトランスパイルします(対象とするバージョンは示されていませんが、IE9 +を対象としています)。

インストールするには、npm install babel -g

かなり多くの依存関係があり、インストールされたときは23.4 MB(2888ファイル)であることに注意してください。

4

マスカラ おそらくあなたが探しているものです。

4
Eli Grey

Google Closure CompilerGithub )はES6のコンパイルに最適なツールです。これはシンプルなJava jarです。APIサービスやGUIなどの他のオプションがありますが、自動ビルドシステムを設定して、 JavaJAR。ES6コードをES5互換コードにトランスパイルできます。コードの圧縮と難読化に使用し始めましたが、エラーチェックとES6トランスパイレーションも実行できます。

ES6の機能は実験的としてマークされていることに注意してください。しかし、テストは非常に堅実だったので、すぐに本番環境で使用することを計画しています。

3

https://github.com/matthewrobb/six もあります

Sixは、JavaScriptの言語のスーパーセットであり、ECMAScriptの第6版の新しい構文機能を、トランスパイラーを介して、今日のスクリプトで使用できるようにします。

[〜#〜]警告[〜#〜]:まだ非常に初期の状態なので、注意して続行してください。

1
Ilia Choly

ES5とは対照的に、ES3にコンパイルするインスタンスがどのような場合に価値があるのか​​はわかりません。実装の変更が配列とオブジェクトヘルパー関数に限定されていること、そして ES5サポートが普及している であることを確認しています。

したがって、完全を期すために、別のES6からES5へのコンパイラーは、Squareによるesnextプロジェクトです。これは、1つのパッケージで提供されるさまざまなES6機能をポリフィルするために設計された多数のモジュールのコレクションです。含まれているリストモジュールは次のとおりです。 https://github.com/square/esnext#available

0
Andrew Odri