Grails で JavaScript 関数を定義する場所は基本的に 2 つあります。GSP の要素で直接定義する場所と、/web-app/js の下の別の JavaScript ソース ファイル (たとえば、application.js) 内です。application.js 内で一般的に再利用される JavaScript 関数を定義しましたが、関数の一部を Groovy コードを使用して動的に生成できるようにする必要もあります。残念ながら、${some groovy code} は別の JavaScript ソース ファイル内で処理されていないようです。
GSP ページの script タグ内で javascript 関数を定義することによってこれを行う唯一の方法ですか、それともより一般的な解決策がありますか? もちろん、再利用されるテンプレート GSP ファイル内のスクリプト タグで JavaScript 関数を定義することもできますが、JavaScript 関数を 1 か所 (つまり、外部 JavaScript ソース ファイル) でまとめて定義しておくことを強く求められています。これにはパフォーマンス上の利点もあります (クライアントがアクセスするすべての HTML ページのソース内で同じ JavaScript 関数を再ロードするのではなく、JavaScript ソース ファイルは通常、各クライアントのブラウザーによって 1 回だけダウンロードされます)。関数を静的部分と動的部分に分割し、静的部分を外部ソースに配置し、動的部分をテンプレート GSP に配置してから、それらを接着するというアイデアをいじりました。
何か案は?
(編集: JavaScript 関数の一部を動的に生成し、一度ダウンロードしてクライアントが何度も使用するという考えは悪い考えのように聞こえるかもしれません。しかし、「動的」な部分は変化するだけです。おそらく週または月に 1 回、その後はごくわずかです. ほとんどの場合、ハードコーディングするのではなく、1 回だけでも、データベースからこの部分を生成したいだけです.)