問題タブ [google-closure-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3450 参照

compiler-construction - ClosureCompilerで複数の警告を@suppressする方法は?

GoogleのClosureCompilerを使用すると、@suppress注釈を使用してファイルごとに警告を抑制することができます。globalThisただし、と警告など、複数の警告を同時に抑制することはできないようですcheckVars。私は両方を試しました

ただし、どちらの場合も@suppress注釈は無視されます。複数@suppress行も機能しません。

0 投票する
1 に答える
3192 参照

visual-studio-2010 - Visual Studio 2010 のビルド ステップとして Google Closure Compiler を統合する方法

これに関するリファレンスやチュートリアルはありますか? また、可能であれば、ファイルが変更された場合にのみ JavaScript ファイルをビルドしてください。

0 投票する
1 に答える
684 参照

javascript - Closure Compiler ADVANCED_OPTIMIZATIONS と関数のカプセル化

Google Closure Compiler (ADVANCED_OPTIMIZATIONS) を使用すると、コードが関数にカプセル化されている場合、実行できない高度な最適化がいくつかあるようです。

にコンパイルします

関数のカプセル化が高度な変数置換を妨げる理由は何ですか? 両方のスニペットが同じ出力にコンパイルされるようにこれを行う方法はありますか?

0 投票する
1 に答える
1088 参照

google-closure-compiler - クロージャコンパイラを使用するときにjQuery.ajax.dataオブジェクトを保持する方法は?

ADVANCED_OPTIMIZATIONS でクロージャ コンパイラを使用すると、jQuery.ajax.data オブジェクトが変更されます。

jQuery.ajax.data オブジェクトは次のように変換されます{L : "some"}

のように引用符を使用できますが'act' : "some"、これを引用符なしで機能させたいと考えています。私のexternsファイルには次のものがあります:

/** @type {Object.<string,*>} */ jQuery.ajax.data; しかし、これはうまくいきません。クロージャ コンパイラ バージョン 1043

0 投票する
1 に答える
570 参照

json - 高度なモードで Google Closure を使用したサードパーティの JSON?

JSON プロパティの名前を変更しようとしているクロージャ コンパイラの高度な最適化に問題があります。リッチ オートコンプリート コントロールを使用して、Name プロパティと Phone プロパティを持つ連絡先を含むアクションから返された JSON をフィードしています。Closure コンパイラは、メソッドとテンプレートで Name と Phone の名前を変更しています。メソッドでは、プロパティ名をオブジェクトへの文字列キーとして使用することで回避できますが、テンプレートでそれを行う方法がわかりません。

私のJSONオブジェクトにはプロパティ「Name」と「Phone」の完全な名前がありますが、関数はそれらを「Hx」や「Az」などに書き換えます。私のテンプレートも同様です:

これら 2 行を makeRow 関数の先頭に追加すると、圧縮された名前が元の名前から適切な値に設定されます。

これを行うことは、スペースに関してもパフォーマンスに関しても無駄に思えます。また、すべての JSON オブジェクトに対してこれを行うつもりはありません。将来、アプリケーションに多くのことを含める予定です (これは単純なテストです)。新しい名前を古い名前にマッピングする方法がわかりません。ソースマップを作成することはできますが、数字がたくさんあるだけで、それらが何を意味するのかわかりません。それがわかれば、C# で簡単なプロパティ マッパーを記述して、短縮された名前の動的オブジェクトを作成できるかもしれません。

クロージャ ライブラリ内のすべてのオブジェクトとプロパティの長い名前を考えると、単純な最適化モードを使用する必要がある場合。シンプルであるべきです。名前の変更を防ぐ @param の代わりに @json タグ、または @param がオブジェクトのプロパティの名前を変更しないようにするその他のシグナルがあれば、それは素晴らしいことだと思います。

になるだろう

externs.js ファイルを作成し、コンパイル時に指定することで、プロパティ名を同じままにできることがわかりました。

これらの名前を持つオブジェクト プロパティは圧縮されないと思いますが、本当ですか? 使用するクラスを指定して、プロパティ名の長いリストを生成するヘルパーを作成できると思います。また、動的な型を使用したい場合があり、プロパティ名を忘れたり、スペルを間違えたりするのではないかと心配しています。


編集:

プロジェクトがサポートしたいものではなく、次のようにオブジェクトをパラメーターとして使用することをお勧めします。

0 投票する
3 に答える
1352 参照

javascript - Google クロージャ コンパイラの高度な最適化が一部の変数を最適化していません

高度な最適化を備えた Google Closure Javascript コンパイラで問題が発生しています。ドキュメントが示唆するように、エクスポートされた Javascript を保持するには、次のようにします。

問題は、何らかの理由で短縮さmyFuncmyFunc2ないことがあり、最終出力に次のようなコードが表示されることです。

これは明らかに理想的ではありません。

どうすればこれを防ぐことができますか?


さらに実験を重ねた結果、'get' などの特定のキーワードがコンパイルされないことが示されました。

にコンパイルします

何が原因なのかはまだわかりませんが。

0 投票する
2 に答える
1561 参照

javascript - jQuery がソース コードを圧縮するために使用するツール

jQuery がバージョン 1.6.2 でソース コードを圧縮するために使用するツールはどれですか?

0 投票する
2 に答える
1925 参照

javascript - Google Closure Compiler 解析エラー: `css({float:'left'})` のプロパティ ID が無効です

Google Closure Compiler アプリケーション (コマンド ライン インターフェース) を使用しています。実行すると、以下のエラーが発生します。

0 投票する
2 に答える
954 参照

javascript - 三項演算子を使用する Google クロージャ コンパイラ: エラー - 一貫性のない戻り値の型

そのため、JS を開発するときに役立つ追加情報を保存するヘルパー名前空間があります。今は、それらをより適切に文書化し、JsDoc と Google Closure コンパイラの助けを借りて JS を強化する予定です。今日の2PMの時点で最新バージョンを入手しました。ただし、次のコードでコンパイラを実行するとエラーが発生します。

したがって、両方の戻り行で、「エラー - 一貫性のない戻り値の型」というコンパイラ エラーが発生します。

Google クロージャ コンパイラでこのような三項演算子を使用するにはどうすればよいですか? はい、Google で検索しましたが、関連性のない検索結果が表示され続けます。今のところ、三項を削除しますが、エラーなしで使用することをお勧めします:

「Tomasz Nurkiewicz」が示唆するようにステートメントを更新しましたが、まだエラーが発生しています: Changed made to code:

コンパイラ出力:

タイプを {Boolean|null} に設定しようとしても、エラーが発生します。何を与える?

0 投票する
1 に答える
1243 参照

java - Google クロージャ コンパイラ jar の高速化

Google Closure Compiler for JavaScript は、オンラインで使用すると非常に高速です。ただし、コマンドラインから実行するには最大 10 秒かかります ( java -client -jar path/to/closure.jar options...)。

これを Web アプリと同じ時間 (最大 3 秒) に減らす方法はありますか? 私の会社では、すべてのビルドがインターネット接続なしで動作できるようにする必要があるため、Web アプリを使用できません。

これは主に起動時だと思いますが (-clientタグを追加した理由)、わかりません。