В сущности, есть 2 места для определения функций JavaScript в Grails, непосредственно в элементе в GSP и в отдельном исходном файле javascript в / web-app / js (например, application.js). Мы определили обычно повторно используемую функцию javascript в application.js, но мы также должны иметь возможность динамически генерировать части функции, используя отличный код. К сожалению, $ {some groovy code} не обрабатывается в отдельных исходных файлах javascript.
Это единственный способ сделать это, определив функцию javascript в теге script на странице GSP, или есть более общее решение? Очевидно, что мы могли бы определить функцию javascript в теге script в GSP-файле шаблона, который можно было бы использовать повторно, но необходимо приложить немало усилий, чтобы все наши функции javascript были определены в одном месте (то есть во внешнем исходном файле javascript). Это также имеет преимущества в производительности (исходные файлы javascript обычно просто загружаются браузером каждого клиента один раз, вместо того, чтобы перезагружать одни и те же функции javascript в источнике каждой HTML-страницы, которую они посещают). Я поиграл с идеей разбить функцию на статические и динамические части, поместить статические во внешний источник и поместить динамические в шаблон GSP, а затем склеить их вместе, но это кажется ненужным хаком.
Есть идеи?
(править: Это может звучать как идея динамического генерирования частей функции JavaScript, которая затем загружается один раз и используется клиентом снова и снова), это было бы плохой идеей. Однако часть, которая "динамична" «изменяется только один раз в неделю или месяц, а затем очень незначительно. В основном мы просто хотим, чтобы этот фрагмент генерировался из базы данных, даже если только один раз, вместо жестко заданного кода.)