0

私は2つのjsファイルを持っています:

1.js

(function(){
  function setLength(a,len){
  a.length=len;
}
  ...........
})();

2.js:

function View(){
  setLength(this,3);
}

は、で定義され2.jsたメソッド ( ) にアクセスすることに注意してください。setLength1.js

したがって、コンパイラーがこれら 2 つのファイルを同じ置換を使用してコンパイルするようにします。

私はこのような結果が欲しい:

(function(){
  function x(a,b){
  a.length=b;
}
  ...........
})();

function View(){
  x(this,3);
}

これは可能ですか?

ところで、ファイルをコンパイルするには、compiler.js を使用します。

java -jar compiler.jar --js file.js --js_output_file file.min.js

これは単一のファイルです。複数のファイルをコンパイルし、それぞれに独自の出力ファイルを作成したいのですが、次のようなものです。

java -jar compiler.jar --js file.js,file2.js --js_output_file file.min.js,file2.min.js
4

1 に答える 1

2

同じ置換を使用してこれら 2 つのファイルをコンパイルするには、クロージャ コンパイラの 2 つのオプションが役立ちます。

 
 --variable_map_input_file VAL : シリアル化されたバージョンを含むファイル
                                           生成された変数の名前変更マップの
                                           以前のコンパイルによって
 --variable_map_output_file VAL : t のシリアル化されたバージョンが格納されるファイル
                                          変数の名前を変更するマップは、shou を生成しました
                                          救われる

だからあなたはできる

  • 最初に 1.js をコンパイルし、variable_map を生成します。

      java -jar compiler.jar --js 1.js --js_output_file 1.min.js -variable_map_output_file variable_map.txt
    
  • 次に、生成された variable_map を使用して 2.js をコンパイルします。

      java -jar compiler.jar --js 2.js --js_output_file 2.min.js --variable_map_input_file variable_map.txt      
    

2.js が 1.js で定義された関数を参照する場合、コンパイラは2.jsをコンパイルするためにextern.jsを必要とします。

また、出力ラッパーを使用すると(function(){%s})()、1.js で定義されたすべての関数に 2.js からアクセスできなくなります。ラッパーをドロップするか、エクスポートを使用する必要がある場合があります

于 2012-10-23T08:32:27.017 に答える