問題タブ [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 に答える
171 参照

vb.net - Google ClosureCompilerはコンパイルされたコードを返しませんか?

Stack Overflowでの別の質問で、JavaScriptファイルをかなり縮小できるGoogleClosureCompilerにコードを送信するための非常に役立つコードスニペットに出くわしました。

しかし、私が直面している問題は、予期しない場合にコンパイルされたコードが返されないことです。

コード:

これは機能します。つまり、縮小されたコードを返します。

一方、これは何も返しません。統計は送信されますが、コンパイルされたデータは送信されません...:

実際に作業を行う残りのコード:

何が原因でしょうか?知りたいです。

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

javascript - Notepad ++用のGoogle Closure Compilerプラグインはありますか

「インターネット」で調べてみましたが、適切な答えが見つかりませんでした。

Notepad ++用のGoogle Closure Compilerプラグイン、またはNppExec.Execute(F6キー)で動作させる方法はありますか。

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

javascript - クロージャ コンパイラはすべてのプロトタイプと静的メソッドをエクスポートします

クロージャコンパイラがクラスとそのすべてのプロトタイプと静的メソッドをエクスポートし、名前をパブリック API として保持できる簡単な方法はありますか? デフォルトでは、高度なオプションはすべての変数の名前を変更しますが、次のようにグローバル スコープにエクスポートできます。

ただし、これは MyClass をグローバル スコープにエクスポートするだけで、すべてのプロトタイプと静的メソッドの名前が変更されます。プロトタイプをループしてエクスポートできると思う人もいるかもしれませんが、そうではありません:

これは機能しません。私が知っている唯一の方法は、次のように手動で追加することです。

50個程度のプロトタイプを公開したいので、この方法は好ましくありません。クラス全体を便利な方法でエクスポートする方法を知っている人はいますか?

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

javascript - クロージャーコンパイラーアドバンスド-パフォーマンスへの影響はありますか?

オンラインクロージャコンパイラは素晴らしいです:

http://closure-compiler.appspot.com/home

ただし、詳細オプションを使用すると、スクリプトのパフォーマンスにまったく影響しますか?IE、それは一般的にそれを速くするか遅くするか、それともスクリプト自体に依存しますか?それとも、パフォーマンスへの影響はまったくありませんか?

私が作成する一部のスクリプトはパフォーマンスが重要になるため、これを尋ねるだけです。この質問に対する答えは「試してみる」ですが、この種のテストの実行はあまり得意ではなく、どこから始めればよいのかわかりません。 。

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

google-closure-compiler - GoogleクロージャーRESTサービスでデバッグコードを削除しますか?

Google クロージャ REST サービスを使用して JavaScript からデバッグ コードを削除するにはどうすればよいですか。--define='DEBUG=false' (if 条件で DEBUG を使用) のように、JS コンパイラにデバッグ変数を指定する必要があることはわかっています。しかし、これを REST サービスに指定するにはどうすればよいでしょうか: http://closure-compiler.appspot.com/home これを試しましたが、うまくいきません。つまり、コードは最適化されていますが、まだデバッグ コードが含まれています :(

0 投票する
6 に答える
3413 参照

javascript - Google ClosureCompilerを使用してJavaScriptでInternetExplorerを検出する方法は?

マウスボタンのイベントを処理するJavaScript関数があります。マウスの左ボタンと右ボタンを区別できる必要があります。残念ながら、Internet Explorerは、他のすべてのブラウザーとは異なる値をevent.buttonに使用します。私はそれらを解釈する方法を知っていますが、どの道を進むべきかを知る必要があります。

私は条件付きコンパイルに依存するJavaScriptハックでそれを行いました。こんな感じです:

これは、偽造できないJavaScriptパーサー機能に基づいており、他のブラウザーによって模倣される可能性が低いため、非常に安全な方法だと思います。

現在、JavaScriptファイルをパックするためにGoogleClosureCompilerを使用しています。他のコメントと同じように、条件付きコンパイルのコメントも削除されることがわかりました。そこで、さまざまなハックを試しました。それらの1つはこれです:

残念ながら、クロージャコンパイラは非常に巧妙であり、条件が真になることは決してないことを発見し、そのコードを削除します。また、Microsoftが最終的にその\ vバグを修正し、検出が失敗する可能性があるため、私はそれが好きではありません。

navigator.appNameやその名前のようなものを読むこともできますが、これは簡単に偽造できません。そして、誰かがブラウザIDを変更した場合、他のevent.buttonの動作を実装する可能性は低くなります...

クロージャコンパイラでは、特定のコメントを保持できます。私はこれを試しました:

これは圧縮後に望ましい結果を生成しますが、ソース形式の機能的な条件付きコメントではありません。しかし、デバッグ上の理由から、JavaScriptファイルが圧縮と非圧縮の両方で機能する必要があります。

圧縮されたJSファイルを手動で変更せずにこれを機能させる希望はありますか?

参考までに、元の形式の完全な関数を次に示します。

0 投票する
4 に答える
2737 参照

javascript - Closure Compiler が自己実行無名関数内の型宣言を認識しないのはなぜですか?

Closure Compiler を使用してかなり大きなライブラリを実行すると、多くの"Unknown type"警告が表示されます。これらの警告は、型が自己実行型の無名関数で宣言されている場合に発生するようです。これには特別なことは何もありませんが、自己実行関数を取り除くと、型宣言が機能するように見えます (少なくともこの単純なテストでは)。

コードの注釈に何か問題があるのか​​、それともコードに違法なものがあるのか​​ はわかりませんが、これはすべてコーシャであり、API をモジュール化する標準的な方法だと思います。

次のテスト コードは、名前空間 (単純な古い JS オブジェクト) を作成し、列挙型 (オブジェクト リテラル) と関数を関連付けます。

いいですね。クロージャー コンパイラ エラー:

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

javascript - Closure Compiler 警告 `グローバル this オブジェクトの危険な使用`?

親愛なる皆さん、Closure Compiler は Advanced Mode で下線付きの警告を出します。{this.

JSC_USED_GLOBAL_THIS: 行 200、文字 33 でのグローバルな this オブジェクトの危険な使用 hovers[i4].onfocus = function() {this.className += "Hovered";}

JSC_USED_GLOBAL_THIS: 行 201 文字 32 でのグローバル this オブジェクトの危険な使用 hovers[i4].onblur = function() {this.className = this.className.replace(/Hove...

JSC_USED_GLOBAL_THIS: 行 201 文字 49 でのグローバル this オブジェクトの危険な使用 hovers[i4].onblur = function() {this.className = this.className.replace(/Hove...

JSC_USED_GLOBAL_THIS: 行 218 文字 38 でのグローバル this オブジェクトの危険な使用 buttons[i5].onmouseover = function() {this.className += "Hovered";}

Q1. これの何がそんなに危険なの?
Q2. これを変更する必要がありますか?
Q3. このコードを改善/解決するにはどうすればよいですか?

慈悲!

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

javascript - Google Closing の 1 つのファイルからのコンパイラ警告を無視する

かなり大きな Closure プロジェクトで外部ライブラリ (Phonegap) を使用しています。残念ながら、Phonegap は大量のコンパイラ警告を生成します (すべて「これの危険な使用」)。コンパイラの出力を検索して、自分のコードに関する警告を探すのはかなり面倒です。

1 つのファイルからの警告だけを黙らせる方法はありますか?

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

javascript - 奇妙なクロージャ コンパイラの問題

Google の Closure Compiler を高度なモードで使用していますが、奇妙な問題が発生しています。コンパイルされたバージョンの実行から返されたログ ステートメントを含む、コンパイルされていないコードを次に示します。

何らかの理由で、静的メソッド isAvailable は、バックエンド配列を介して LocalStore にアクセスするときに存在せず、グローバル名前空間を介してアクセスするときに存在します。

誰でも理由がわかりますか?

編集:参考までに、ここにメソッド宣言があります: