我刚刚加入了一个团队,在java中使用google-closure来构建来自soyfiles的网站输出。这适用于HTML,但目前它对javascript非常难看。目前的方法是在{literal}中包围javascript,这意味着我们没有任何好处。我们正在做的一个例子如下:
{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 params来确定是否生成了脚本的整个部分。如上所示,这些js soy文件几乎总是被称为其他siy文件的一部分,通常都是html。
所以我的问题是,我们该怎么办?我查看了|escapeJs
标志,但我无法找到应用它的位置。摆脱{literal}
将导致渲染错误成为所有javascript括号。有一个更好的方法吗?我是否应该使用大豆文件为js(因为我开始怀疑我们不应该)?
答案 0 :(得分:2)
所以这里有一些方法,最好的方法是在模板外生成你的javascript。 你也可以用{lb}和{rb}替换你的大括号,但这确实使得代码几乎不可读。