5
java -jar SoyToJsSrcCompiler.jar --shouldGenerateJsdoc --outputPathFormat 
           simple.js --srcs simple.soy

SoyToJsSrcCompiler は、次のような js ファイルを生成します。

if (typeof templates == 'undefined') { var templates = {}; }
if (typeof templates.simple == 'undefined') { templates.simple = {}; }

/**
 * @param {Object.<string, *>=} opt_data
 * @param {(null|undefined)=} opt_ignored
 * @return {string}
 * @notypecheck
 */

 templates.simple.tinyButton = function(opt_data, opt_ignored) {
     .....
 };

Closure Compiler を--warning_level=VERBOSEと で使用しています--compilation_level ADVANCED_OPTIMIZATIONS

そして、私はこの警告を受けています:

simple.js:1: WARNING - Variable referenced before declaration: templates
if (typeof templates == 'undefined') { var templates = {}; }

この警告をクリアするにはどうすればよいですか?

4

2 に答える 2

6

1 つの回避策は、次のように externs ファイルで変数を宣言することです。

/** @suppress {duplicate} */
var template;

しかし、Soy コンパイラは修正する必要があります。通常は Closure Library で使用し、そのモードでは Soy コンパイラが生成する必要があるため、これが表示されないことを期待しています。

goog.provide('template.simple')
于 2014-01-11T01:24:31.357 に答える
1

Soy で Closure コンパイラを使用している場合は、 または のいずれかを渡す必要があり--shouldProvideRequireJsFunctionsます--shouldProvideRequireJsFunctions。それ以外の場合は、コンパイラを使用しないと想定し、ブラウザが理解できるコードを生成しますが、それ以外の場合はちょっと不安定です。

(出典: 私は Soy コンパイラの保守を手伝っています。通常、これらのフラグのいずれかが渡されない限りコンパイラをテストすることはありません。これらのフラグの少なくとも 1 つを必須にすることは理にかなっているかもしれません。これらのフラグがないと実際にはうまく機能しないからです。)

于 2014-01-11T20:29:32.383 に答える