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

javascript - jquery を使用したクロージャー コンパイラ アプリ

高度な最適化を備えたGoogleのクロージャコンパイラを使用して、jQueryとjQuery UIを使用する小さなサイズのjsアプリケーションを作成することができました. わかりやすくするために、jQuery自体はコンパイルしていません。jqueryを使用するアプリだけです。このアイデアがより大きく複雑なアプリでも機能することを誰かが確認できるかどうか知りたい.

手順は次のとおりです。

0.- jquery-1.4.3.min.js、test1.js、および test2.js を呼び出す html ファイルがあります。

1.- アプリをコンパイルし、プロパティ マップ ファイルをエクスポートします。

プロパティ マップは、コンパイル前後のプロパティの名前を含むキー/値ファイルです。

2.- prop.out を prop.in にコピーし、それを編集して、jQuery プロパティ (関数) が同じ名前に置き換えられるようにします (これは、リスト jquery の関数で簡単に自動化できます)。

3.- prop in をプロパティ マップ入力として使用して再コンパイルする

4.- HTML に min.js と jquery-1.4.3.min.js を含めます。アプリケーションは機能する必要がありますが、コードはより高速で小さくする必要があります。

これにより、jquery ではなく、コードが縮小されます。

私が言ったように、私はこれを小さなアプリでテストしました。誰かがより大きく複雑なアプリを持っている場合、これが機能することを知っておくとよいでしょう.

ありがとう、

ヘグ

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

javascript - 名前を変更しない ADVANCED_OPTIMIZATION

Google クロージャ コンパイラを使用して Google Chrome 拡張機能を作成しています。メッセージ API を多用して、異なるプロセスで実行されるコード間で通信します。そのため、ファイルを個別にコンパイルする必要があります。高度な最適化を使用する場合、このメッセージ API で送信するデータ内の引用符で囲まれた文字列を含むプロパティにもアクセスする必要があります。これは問題なく動作しますが、コードが見苦しくなります。しかし、高度な最適化に伴うデッド コードの削除が気に入っています。

高度な最適化に伴う名前変更なしで、デッド コードの削除を実行できるようにしたいと考えています。これはクロージャコンパイラで可能ですか?

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

javascript - 純粋な JavaScript にプリコンパイルする JavaScript テンプレート言語

現在取り組んでいるプロジェクトで、Google Closure Compiler詳細モードで使用しています。これは非常にアグレッシブな JavaScript コンパイラであり、コードをかなり最適化できます。ただし、これを行うには、全体像を見る必要があります。つまり、window.foo に何かを割り当てて、コンパイラが認識できない JS から window.foo にのみアクセスすると、window.f に変更されるか削除されるため、存在しません。すべて一緒に。

これは、JS テンプルの時期になると事態を複雑にします。実行時に文字列からロードされるため、存在しない変数を参照する傾向があります。これは、テンプレートに値を提供するために使用されるオブジェクトに引用符付きの割り当てを使用することで、わずかに軽減できます。例えば。templateContext.user ではなく templateContext['user']。ただし、それでは templateContext.user.username などを実行できないため、多少制限があります。

tl;dr : .js ファイルに含めることができる純粋な JavaScript に前処理できる JavaScript テンプレート ソリューションが必要です。

このようなものは存在しますか?

0 投票する
5 に答える
8507 参照

javascript - Googleクロージャーコンパイラーに「厳密な使用」を強制する方法; コンパイルされたjsコードで?

モジュールパターンを使用していて、次のようなものがある場合:

Google Closure Compiler を使用してコードをコンパイルすると、"use strict";ディレクティブはコンパイル済みファイルになりません。

では、Closure Compiler が ES5/strict ディレクティブを削除しないようにするにはどうすればよいでしょうか?

(コンパイルされたファイルの最初の行に「use strict」を追加するだけの、ES5/strict モードを強制する他のモードを使用したくないことに注意してください。ここで説明されているモジュール パターンを使用したい.)

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

javascript - Closure Compiler はどのように機能しますか?

Google の Closure Compiler がどのように機能するのか疑問に思っています。たとえば、次のような関数呼び出しを変換できますか。

実際の実装に:

私はいくつかの機能を結び付ける多くのラッパーを持っているので、これを求めています.Closure Compilerにそれらを変換して、関数呼び出しを1つ少なくしたいのです.

実際、関数呼び出しを 1 つ追加すると、アプリの速度が目に見えて遅くなりますか?

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

javascript - Closure Compiler が「true」、「false」、「null」の名前を変更しないようにする方法

Google Closure Compiler は、コード内のすべての「true」、「false」、および「null」の名前を次のように変更します。

代わりにこれらの省略形を使用します。次のような条件で。

今; Google アナリティクス コードは独自の「s」変数を定義します。値「true」をオーバーライドします。ご覧のとおり、これは多くの問題を引き起こします。

GA コードを変更したくありません。Closure Compiler に true などの名前変更をやめてもらいたいだけです。Externs は機能しません。

これを達成する方法を知っていますか?

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

php - Google Closure Compiler: プログラムによるアクセスの問題

プログラムでClosure Compilerツールにアクセスしようとしていますが、PHP と JavaScript の両方に問題があります。以下は、コンパイラの REST API をいじるためだけに作成した手っ取り早い PHP スクリプトです。

私が見る出力は次のとおりです。

cURL optionsに問題があるのではないかと思いました。そこで、(jQuery.post()呼び出しを介して) JavaScript を試しました。私は「jQuerify 」でランダムな Firefox ウィンドウを開き、 Firebugコンソールで次のコードを実行しました。

「ネット」パネルには、これに対する 403 エラーが表示されます。

私は何が欠けていますか?

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

javascript - クロージャコンパイラスキップファイル

ページ上のすべての.jsファイルを収集し、クロージャーコンパイラーを使用してコンパイルするためにそれらを連結するシェルスクリプトがあります。ただし、特定のjsファイルをコンパイラー経由で最適化する必要はありません。たとえば、fileA.js、fileB.js、fileC.jsをコンパイルするコマンドがあります。fileB.jsをスキップしても、出力ファイルscripts.min.jsに正しい順序で配置するようにするにはどうすればよいですか?したがって、fileA.jsとfileC.jsはSIMPLE_OPTIMIZATIONを使用して最適化され、fileB.jsは変更されません。このファイルをスキップするという、ファイル自体のコメントに配置できるキーワードはありますか?

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

vb.net - クロージャーコンパイラサービスAPI

クロージャコンパイラサービスを私のアプリケーションの1つに統合しようとしていますが、いくつかの問題があります。

返されるエラーは「(413)リクエストエンティティが大きすぎます」です。合理的に聞こえますが、実際には、サービスは送信しているファイルよりも大きいファイルを受け入れます。

何か案は?

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

javascript - 「void0」と「undefined」の違い

私は「ClosureCompiler」を使用しています。スクリプトをコンパイルするとき、次のように費やします。

コンパイルする前に:

編集済み:

これで「void0」と「undefined」の使い方の質問は、使い方に違いはあるのでしょうか、それとも2つのケースでいいのでしょうか。

編集

「void0」でコンパイルされた「varundefined」を定義した場合、「undedined。」でコンパイルされた「undefined」を定義しなかった場合、「undefined」と「void0」の間の文字数の問題ではありません。

テスト

編集II:このリンクに基づくパフォーマンス

コードとテスト

IE 8:
typeof:228ms
未定義:62ms
void 0:57ms

Firefox 3.6:
typeof:10ms
undefined:3ms
void 0:3ms

Opera 11:
typeof:67ms
undefined:19ms
void 0:20ms

Chrome 8:
typeof:3ms
undefined:5ms
void 0:3ms