11

多くの JavaScript ライブラリには、クライアントへのダウンロード帯域幅コストと実際に必要な機能を分離するという観点から、依存するライブラリの機能を「形成」できるビルダー ツールがあります。

たとえば、sugar.js の多くの機能が気に入っていますが、カタカナとひらがなの文字セットを処理する必要はありません。最も些細な例として、sugar.js を「整形」して、string.isBlank() のみをエクスポートできるようにしたいと考えています。

これを行うためのツールはありますか? JavaScript の将来のバージョンでこのようなことを行うための EcmaScript 委員会による継続的な取り組みはありますか? TypeScript や CoffeeScript などの高水準言語は、そのような「シェーピング」の隠れたサポートを提供していますか? monolinkerを介して、.NET DLL の C# でこのような「シェーピング」を行うことができます。

基本的に、AMD は最新のコンパイラのローダーの側面を処理するように見えますが、リンカーの側面は処理しません。jqueryおよびdojoのビルダーは特定のモジュールに対してのみ機能し、真のリンカーではなく単なるビルダーです。

更新: Google Closure Compilerは、JavaScript を入力として受け取り、JavaScript を出力として生成するコンパイラです。Advanced Compilation and Externs documentation は、これを行うための API 呼び出しがあることを示唆しています。

これらのエクスポート ステートメントをまとめるのが面倒な場合は、関数を使用してエクスポートを行うことができます。エクスポート関数の例については、クロージャ ライブラリ関数goog.exportSymbol()およびgoog.exportProperty()を参照してください。

しかし、これはかなり複雑なようで、Google Closure Compiler に直接依存することになります。この時点で、CommonJS に関する EcmaScript 委員会からの将来の標準に関する情報、およびこの問題について考え、それに取り組もうとした人々からの知恵を探しています。特に仲間の TypeScript 開発者から。Sugar.js の TypeScript で宣言ファイルを作成し、TypeScript コンパイラの出力に対して Google Closure Compiler を使用する必要はありません。信じられないほど複雑で、デバッグが難しいように思えます。

4

1 に答える 1

2

残念ながら、この「シェーピング」を行うための Javascript には何も組み込まれていません。実際に必要なのはコンパイラです。これが提供する役割のおよそ 1 つは、(メソッドだけでなく) 多くのレベルで「シェーピング」を自動化することだからです。

Closure Compiler は完成度が高く、オープン ソースです (JQuery は実際には Closure Compiler を使用して圧縮されています)。したがって、コンパイラー用に JS コードにアノテーションを付ける場合は、これを使用することをお勧めします。

コンパイラを使用することには、膨大な数の副次的な利点があります。それらは、含まれているライブラリを単純に整形するだけでなく、ファイルサイズ (したがって解釈/実行時間) を大幅に削減します。また、開発中には、バグを早期に発見するための多くの役立つメッセージが生成されます。

于 2013-05-04T02:27:49.677 に答える