1

したがって、クロージャコンパイラは優れていますが、関数のエクスポートとexternの定義は手作業が多すぎるようです。関数を削除したり、未定義の関数の名前を変更したりしないようにコンパイラーに指示する方法はありますか?

これには2つの主な理由があります。

  1. 関数またはプロパティがjavascriptドキュメントのスコープで定義されていない場合は、おそらく外部ファイルで定義されています。したがって、これらの名前を変更したくありません。

  2. 関数が特定のスコープで定義されているが、同じスコープ内で呼び出されていない場合は、外部コードで呼び出されている可能性があります。したがって、この関数の名前を変更せずにファイルに保持したいと思います。

このようにして、外部ライブラリを気にせず、htmlページから呼び出される関数をエクスポートすることなく、JavaScriptファイルを簡単にコンパイルできます。

4

2 に答える 2

1

SIMPLE_OPTIMIZATIONS の最適化レベルでコンパイラを実行する必要があるように思えます。コードを完全にコンパイルするため、名前に惑わされないでください。主な違いは、SIMPLE_OPTIMIZATION はグローバル スコープ内のデッド コードの名前を変更したり削除したりしないことです。これは、externs と exports の要件が存在しなくなったことを意味します。

于 2012-06-02T12:25:17.440 に答える
0

これを避けるために、アプリケーションのすべてのスクリプトを連結した完全なスクリプトでクロージャ コンパイラを実行します。したがって、これは 2 段階のプロセスです。

1 - すべてを連結

2 - クロージャ コンパイラを実行する

さらに、(v1.8 より前の jquery の問題により、よくあることですが) compilationLevel="simple" を指定してコンパイラを実行することもできます。

連結は非常に重要です。一般に、速度の低下は合計サイズではなく、主にリクエスト数に関係するためです。

編集:もちろん、これをすべて自動化する必要があります。ant を使用している場合は、ant タスク定義を提供できます。

于 2012-06-02T10:40:40.807 に答える