1

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

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

4

3 に答える 3

1

すぐに使用することはできませんが、ソースをダウンロードして Java で自分でカスタマイズすることはできます。

于 2010-12-22T12:19:09.673 に答える
1

はい私は同意する。高度なモードで Closure Compiler を使用するためだけに、渡されるデータを処理するすべてのコードobj["prop"]の代わりに使用する必要があるのは見苦しいです。obj.prop

私が開発した 1 つのトリックは、マッピング オブジェクトを作成することです。

var mapping = {
  field1: "field1",
  field2: "field2"
    :
};

このオブジェクトは、Closure Compiler によってコンパイルされた後、元のマングルされていない名前にマッピングされた (名前が変更された) マングルされたフィールド名を持ちます。

var a = {
   b: "field1",
   c: "field2"
      :
};

次に、データを送信する前に、データ構造全体を複製する関数を介してデータを渡し、新しいオブジェクトを渡す前に、マングルされた各フィールド名を新しいオブジェクトのマングルされていないバージョンに変換します。

function cloneData(obj) {
    var newobj = {};
    foreach (var name in obj) {
        if (!obj.hasOwnProperty(name)) continue;
        var fullname = mapping[name] || name;
        newobj[fullname] = obj[name];
    }
    return newobj;
}

受信したデータについては、逆の手順を実行します。

于 2011-03-10T12:56:59.117 に答える
0

保持したい数がわからない場合は、ドキュメントの「保持したいシンボルのエクスポート」セクションを調べるとよいでしょう。

于 2010-12-22T10:56:46.657 に答える