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

问题描述 投票:0回答:2

我刚刚加入了一个团队,该团队在 java 中使用 google-closure 来从 soyfiles 构建网站输出。这对于 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 文件吗(因为我开始怀疑我们不应该这样做)?

java javascript google-closure
2个回答
3
投票

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


0
投票

抱歉,这不是答案,但它不会让我发表评论,因为我是新来的。你找到解决办法了吗?我已经为这件事苦苦挣扎了好几天,非常想知道你是如何处理这个问题的。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.