43

JavaScriptに関するPeterの記事を読んだ後、私は気づきました

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

現在、あいまいなES:Harmony準拠の 2 つの一般的なコンパイラがあります。

CoffeeScript にはある程度のコンプライアンスがありますが、ES:Harmony コンパイラとして設計されていないため、この目的には役に立ちません。

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

目的は ES6 を ES3 にコンパイルすることであるため、ES5 の機能もサポートする必要があります (おそらく、ES5 を ES3 にコンパイルするか、ES6 を ES3 にコンパイルするかを切り替える必要があります)。

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

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

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

4

8 に答える 8

14

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

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

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

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

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

于 2011-06-28T17:52:03.350 に答える
11

ES6 に基づく Microsoft の新しい言語であるTypeScriptを確認してください。

于 2012-12-26T07:35:53.920 に答える
8

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

于 2013-01-15T16:51:13.503 に答える
4

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

于 2011-07-01T02:32:07.470 に答える
4

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

インストールするには、 と入力しnpm install babel -gます。

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

于 2015-07-02T11:11:55.673 に答える
3

Google Closure Compiler ( Github ) は、ES6 のコンパイルに最適なツールです。これは、コマンド ラインから使用される単純な Java jar です。API サービスや GUI などのオプションは他にもありますが、Java JAR にフックする自動ビルド システムをセットアップするのが最善であることがわかりました。ES6 コードを ES5 互換コードにトランスパイルできます。コードの圧縮と難読化に使用し始めましたが、前述のようにエラー チェックと ES6 トランスパイルも実行できます。

ES6 の機能は実験的であることに注意してください。しかし、私のテストは堅実だったので、すぐに本番環境で使用する予定です。

于 2014-11-12T22:26:30.917 に答える
1

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

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

警告: まだ非常に初期の状態であるため、注意して進めてください。

于 2013-05-24T15:22:58.677 に答える
0

実装の変更が配列とオブジェクトのヘルパー関数に限定されており、 ES5 のサポートが非常に普及していることを考えると、ES5 とは対照的に、ES3 に戻すコンパイルがどのような場合に役立つかはわかりません。

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

于 2014-07-23T20:27:09.677 に答える