0

Google Closure templates (Soy)Google Closureを使用しようとしています。Googleクローズでsoyutilsを使用する正しい方法は何ですか?

私は指示通りにsoyutils_usegoog.jsユーティリティファイルを含んでいます。このファイルは、生成されたテンプレートで使用されるいくつかのユーティリティ、特にsoy.StringBuilderを提供します。ここでは、それはそれを作成している方法は次のとおりです。

soy.StringBuilder = goog.string.StringBuffer; 

soyutilsファイルには、上記goog.string.StringBuffer数行が必要ですが、非コンパイルモードで実行しているときStringBufferが常駐することをJSファイルがロードされないため、これは、実行時エラーになりますの後にのsoyutilsが実行されました。

私が間違っていない限り、ClosureのJSファイルは、必要な名前空間にすぐにアクセスすべきではありません。 <script>タグは、(非コンパイルモードで)現在のスクリプトの実行後にのみ追加されるため、即時使用で実行時エラーが発生します。

つまり、good.string.StringBufferの早期アクセスのためにランタイムエラーが発生することなく、soyutils_usegoog.jsにロードするにはどうすればよいですか。

答えて

1

コンパイル済みのテンプレートを入力として(およびsoyutils_usegoog.js)deps.jsを再作成していますか?あなたのテンプレートはgoog.requireですか?このようなものはうまくいくはずです:

<script src="/closure-library/closure/goog/base.js"></script> 
<script src="/closure-library/closure/goog/deps.js"></script><!-- might not need this line if base.js is setup to auto include deps.js --> 
<script> 
    goog.require('your.template');//this will pull in and execute all the dependencies (including StringBuffer) for your template 
</script> 
<script> 
    alert(your.template()); 
</script> 
関連する問題