我正在尝试将Google Closure templates (Soy)与Google Closure一起使用。
我按照指示包含soyutils_usegoog.js
实用程序文件。此文件提供了生成的模板使用的许多实用程序,尤其是soy.StringBuilder
。以下是它创建它的方式:
soy.StringBuilder = goog.string.StringBuffer;
soyutils文件上面需要goog.string.StringBuffer
几行,但是当在非编译模式下运行时,这会导致运行时错误,因为StringBuffer
所在的JS文件在 soyutils执行后。
除非我弄错了,否则Closure中的JS文件不应该立即访问他们'需要'的命名空间。 <script>
标记仅在执行当前脚本后添加(在非编译模式下),因此立即使用将导致运行时错误。
简而言之,我如何加载soyutils_usegoog.js
而不会因good.string.StringBuffer
的早期访问而触发运行时错误。
答案 0 :(得分: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>
答案 1 :(得分:0)