如何在文件中正确使用javascript?

如何在文件中正确使用javascript?,java,javascript,google-closure,Java,Javascript,Google Closure,我刚刚加入了一个团队,该团队使用java中的GoogleClosure从SoyFile构建其站点输出。这对html很有效,但目前对javascript来说相当糟糕。当前的方法是将javascript包围在{literal}中,这意味着我们没有任何好处。我们正在做的一个例子如下: {namespace forms autoescape="contextual"} {template myForm} //.... stuff happens {call js.myFormJs data="$som

我刚刚加入了一个团队,该团队使用java中的GoogleClosure从SoyFile构建其站点输出。这对html很有效,但目前对javascript来说相当糟糕。当前的方法是将javascript包围在{literal}中,这意味着我们没有任何好处。我们正在做的一个例子如下:

{namespace forms autoescape="contextual"}
{template myForm}
//.... stuff happens

{call js.myFormJs data="$someParam" /}
js:

{namespace forms autoescape=“context”}
/**
*@param-foo
*/
{模板myForm}
{literal}
//js的事情发生了
var myVariable{/literal}{$foo}{literal};
//js的事情发生了
{/literal}
{/template}
在某些地方,我们还使用
{if}
块中的参数来确定是否生成了脚本的整个部分。如上所示,这些js文件几乎总是作为其他siy文件的一部分调用,通常都是html


所以我的问题是,我们应该做什么?我查看了
|escapeJs
标志,但找不到应用它的位置。去掉
{literal}
将导致所有javascript大括号的呈现错误。有更好的方法吗?我是否应该在js中使用soy文件(我开始怀疑我们不应该使用)?

因此这里有几种方法,最好的方法是在模板之外生成javascript。 你也可以用{lb}和{rb}替换你的花括号,但是我确信这会让代码几乎不可读

{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}