我刚刚加入了一个团队,该团队使用java中的google-closure来构建soyfile的站点输出。这在html上运行得很好,但目前它对javascript来说却相当丑陋。当前的方法是将javascript放在{literal}中,这意味着我们得不到任何好处。下面是我们正在做的一个示例:
{namespace forms autoescape="contextual"}
{template myForm}
//.... stuff happens
{call js.myFormJs data="$someParam" /}js:
{namespace forms autoescape="contextual"}
/**
* @param foo
*/
{template myForm}
<script type="text/javascript">
{literal}
//js stuff happens
var myVariable {/literal}{$foo}{literal};
//js stuff happens
{/literal}
</script>
{/template}我们还在某些地方使用{if}块中的soy参数来确定是否生成了整个脚本部分。如上所示,这些js soy文件几乎总是作为其他siy文件的一部分被调用,通常都是html。
所以我的问题是,我们应该做什么?我查看了|escapeJs标志,但我找不到应用它的位置。去掉{literal}会导致渲染错误和所有的javascript大括号。有没有更好的方法来做这件事?我应该为js使用soy文件吗(我开始怀疑我们不应该这样做)?
发布于 2013-06-28 17:35:30
这里有几种方法,最好的方法是在模板之外生成你的javascript。你也可以用{lb}和{rb}替换你的花括号,但这会使代码几乎不可读,我敢肯定。
https://stackoverflow.com/questions/17355230
复制相似问题