0

我正在尝试使用Google Closure templates (Soy)Google Closure在Google Closure中使用soyutils的正确方法是什么?

我按照指示包含soyutils_usegoog.js实用程序文件。该文件提供了生成的模板使用的许多实用程序,特别是soy.StringBuilder。下面是它是如何创建它:

soy.StringBuilder = goog.string.StringBuffer; 

的soyutils文件需要goog.string.StringBuffer几行以上,但在非编译模式下运行时,这会导致运行时错误,因为JS文件StringBuffer驻留在不会被加载直到之后 soyutils已执行。

除非我错了,否则Closure中的JS文件不应该立即访问他们'需要'的命名空间。 <script>标签仅在执行当前脚本(非编译模式)后添加,因此立即使用会导致运行时错误。

总之,如何在soyutils_usegoog.js中加载,而不会因为good.string.StringBuffer的早期访问而触发运行时错误。

回答

1

您是否正在使用已编译的模板重新创建deps.js作为输入(和soyutils_usegoog.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> 
相关问题