3

Luke Rodgers の Backbone と Underscore externsを使用しています_.extendが、コンパイルされた出力で が変更されている理由がわかりません。

たとえば、バックボーン 0.9.2 では次のコード (193:195):

if (defaults = getValue(this, 'defaults')) {
  attributes = _.extend({}, defaults, attributes);
}

次のようにコンパイルされます。

if(c=r(this,"defaults"))a=f.extend({},c,a);

次のコンパイル コマンドを使用しました。

java -jar compiler.jar 
     --externs backbone-0.9.2-externs.js 
     --externs underscore-1.3.3-externs.js 
     --compilation_level ADVANCED_OPTIMIZATIONS 
     --js underscore-1.3.3.js  
     --js backbone-0.9.2.js 
     --js_output_file compiled.js

別の JavaScript ファイルを含める場合:

     --js test.js

次のものが含まれます。

_.extend({}, {name: 'test'});

で変更されていませんcompiled.js

_.extendbackbone.js の呼び出しが変更されている理由を知っている人はいますか?

4

1 に答える 1

6

私の externs ファイルが役に立ったことを嬉しく思います。私の頭の中で、あなたが遭遇している問題は、externs ファイルを使用していてライブラリをコンパイルしているという事実によるものだと思います。

通常、externs ファイルは、ライブラリがコンパイル手順の一部ではない場合に使用されます。jQuery や Underscore などのコンパイル済みバージョンを使用したり、共有 Google ライブラリにリンクして事前にキャッシュされた js を利用したりしても、Closure Compiler に jQuery と Underscore API を理解させたいと考える人もいます。そのため、extern を使用します。

Underscore ライブラリと Backbone ライブラリの明示的な型注釈を探している場合、これは多少異なる問題です。

于 2012-06-20T16:40:35.377 に答える