1

CompilerOptionの一部のオプションがコマンドラインにエクスポートされないことがわかりました。

たとえばalias all strings、ClosureCompilerのJavaAPICompilerOptionで利用できますが、コマンドラインでこれをどのように設定するかわかりません。

次のような新しいJavaクラスを作成できることはわかっています。

Compiler c = new Compiler();
ComppilerOptions opt = new ComppilerOptions();
opt.setAliasAllString(true);

c.compile(.....);

ただし、コマンドライン引数は自分で処理する必要があります。

簡単なアイデアはありますか?

============================

このオプションを試すためにalias all string、compiler.jarに基づいた簡単なコマンドラインアプリケーションを作成します。

しかし、開いたときに得られた結果は、alias all string私が期待したものではないことがわかりました。

例えば:

a["prototype"]["say"]=function(){
  var a="something string";
}

上記のコードを考えると、は次のsomething stringような変数に置き換えられます。

var xx="something string";

....
var a=xx;
....

これは問題ありませんが、文字列「say」はどうですか?クロージャコンパイラは、これがエイリアス化(変数を使用して置き換える)またはエクスポート(このメソッドをエクスポート)する必要があることをどのように認識しますか?

これは今コンパイルされたコードです:

a.prototype.say=function(){....}

エクスポートしているようです。

私はこれが欲しいですが:

var a="prototype",b="say",c="something string";

xx[a][b]=function(){.....}

実際、これはgoogle_mapのようなコンパイルです。

これは可能ですか?

4

3 に答える 3

1

http://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/javascript/jscomp/CompilationLevel.java?r=706を変更するのは、通常、プレイしたいだけの場合は簡単です。何かで。

于 2012-11-09T06:55:59.843 に答える
1

コマンドラインからすべてのオプションを使用できるわけではありません。これにはaliasAllStringsが含まれます。それらのいくつかについては、次のオプションがあります。

  1. コンパイラのカスタムバージョンをビルドする
  2. Java APIを使用します(例を参照)。
  3. plovrを使用する

Maps APIと同じレベルの圧縮と難読化を行うには、コンパイラ用に特別に記述されたコードが必要です。適切に記述されると、プロパティと名前空間の折りたたみ、プロトタイプのエイリアシング、およびその他のホスト全体が表示されます。そのように最適化するコードのスタイルの例については、ClosureLibraryをご覧ください。

于 2012-11-12T13:19:21.703 に答える
0

Plovr(クロージャービルドツール)は、と呼ばれるオプションを提供しますexperimental-compiler-options。これは次のように文書化されています。

クロージャコンパイラには、Javaでプログラムでのみ使用できる多くのオプションが含まれています。これらのオプションの多くは実験的であるか、最終化されていないため、APIの永続的な部分ではない可能性があります。それにもかかわらず、それらの多くは今日あなたに役立つでしょう、それでplovrはこれらのexperimental-compiler-optionsオプションを公開しようとします。内部的には、Javaでのリフレクションを使用するため、かなりハッキーですが、実際には、Javaコードを記述せずにClosureCompilerオプションを試すのに便利な方法です。

于 2012-11-09T04:30:59.133 に答える