如何在封闭大豆文件中正确使用javascript?

时间:2013-06-28 00:06:40

标签: java javascript google-closure

我刚刚加入了一个团队,在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(因为我开始怀疑我们不应该)?

1 个答案:

答案 0 :(得分:2)

所以这里有一些方法,最好的方法是在模板外生成你的javascript。 你也可以用{lb}和{rb}替换你的大括号,但这确实使得代码几乎不可读。