Я только что присоединился к команде, которая использует google-закрытие в java для создания выходных данных сайта из соевых файлов. Это хорошо работает для html, но на данный момент это довольно уродливо для javascript. Текущий подход состоит в том, чтобы окружить javascript в {literal}, что означает, что мы не получаем никаких преимуществ. Пример того, что мы делаем, это ниже:Как правильно использовать javascript в закрытых файлах сои?
{namespace forms autoescape="contextual"}
{template myForm}
//.... stuff happens
{call js.myFormJs data="$someParam" /}
ЯШ:
{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}
Мы также используем в некоторых местах сои Params в {if}
блоков, чтобы определить, есть ли целые части сценария генерируются. Как показано выше, эти joy-файлы сои почти всегда называются частью какого-либо другого siy-файла, обычно это html.
Так что мой вопрос: что мы должны делать? Я посмотрел на флаг |escapeJs
, но я не могу найти, где его применить. Избавление от {literal}
вызовет ошибки рендеринга всех привязок javascript. Есть лучший способ сделать это? Должен ли я использовать файлы сои вообще для js (поскольку я начинаю подозревать, что мы не должны)?