0

Google ClosureでGoogleClosureテンプレート(Soy)を使用しようとしています。

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

soy.StringBuilder = goog.string.StringBuffer;

soyutilsファイルにはgoog.string.StringBuffer上記の数行が必要ですが、非コンパイルモードで実行すると、 soyutilsが実行されるStringBufferまでに存在するJSファイルがロードされないため、ランタイムエラーが発生します。

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

soyutils_usegoog.jsつまり、の早期アクセスによるランタイムエラーをトリガーせずにロードするにはどうすればよいですかgood.string.StringBuffer

4

2 に答える 2

1

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

<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>
于 2012-01-01T17:50:10.690 に答える
0

おそらく、質問はhttp://groups.google.com/group/closure-templates-discussで尋ねられましたか?

于 2011-11-21T16:34:36.590 に答える