2013-06-28 2 views
2

Я только что присоединился к команде, которая использует 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 (поскольку я начинаю подозревать, что мы не должны)?

ответ

2

, так что здесь есть несколько подходов, лучший подход заключается в создании вашего javascript вне шаблона. вы также можете заменить фигурные скобки на {lb} и {rb}, но это делает код почти нечитаемым. Я уверен.