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}
また、一部のブロックで soy パラメータを使用して{if}
、スクリプトの一部全体が生成されるかどうかを判断します。上に示したように、これらの js soy ファイルはほとんどの場合、他の siy ファイルの一部として呼び出され、通常はすべて html です。
私の質問は、私たちは何をすべきかということです。フラグを見ました|escapeJs
が、適用する場所が見つかりません。{literal}
すべての JavaScript ブレースを取り除くと、レンダリング エラーが発生します。これを行うより良い方法はありますか?js に soy ファイルを使用する必要がありますか (使用すべきではないと考え始めているため)。