Question

Je souhaite scinder mes vues dans Grails en deux fichiers, un fichier .gsp et un fichier .js, afin d'obtenir une séparation javascript plus claire avec mes vues. Alors, voici un exemple:

views/index.gsp
views/index.js
views/home/index.jsp
views/home/index.js

Mais quand j'ajoute simplement la référence de script index.js comme ceci:

<script src="index.js" type="text/javascript"></script>

tout ce que je reçois est un 404.

Quelqu'un sait-il comment gérer cela?

Un grand avantage serait de pouvoir utiliser les données d'affichage dans le fichier index.js pour produire le contenu souhaité.

Matthias.

Était-ce utile?

La solution

En fait, il devrait être parfaitement possible de servir un fichier JS (ou tout autre type de fichier) en tant que SPG à partir de votre répertoire grails-app/views/. La seule chose à faire est de définir un mappage d’URL approprié pour ces GSP, par exemple:

.
"/javascript/home/index"(view:'/home/index.js')

Avec ce mappage d'URL, vous pouvez insérer votre code JS dans grails-app/views/home/index.js.gsp (notez le .gsp de fin) et utiliser toutes les balises Grails de votre source JS. Pour vous assurer que votre JS est livré avec le type de contenu correct, vous pouvez placer

<%@ page contentType="text/javascript"%>

au début de votre SPG.

Malheureusement, la balise createLink ne prend pas en charge la réécriture de liens en vues, mais il devrait être facile d'écrire votre propre balise pour créer ces liens.

Quoi qu'il en soit, gardez à l'esprit que cela n'aura pas un impact très positif sur les performances de votre application. Il est généralement préférable d’avoir des fichiers JS statiques (et de les utiliser également comme ressources statiques) tout en transmettant des éléments dynamiques comme paramètres aux fonctions JS, par exemple. Cela vous évitera également des maux de tête. la mise en cache, etc.

Autres conseils

Mise à jour 2:

Grails offre la possibilité de s’intégrer au cycle de vie de la construction en utilisant événements personnalisés .

Il est possible d'écrire un gestionnaire d'événements qui synchronise tous les fichiers javascript de grails-app/views avec le dossier cible de web-app/js.

Placez le code personnalisé dans $ PROJECT / scripts / Events.groovy. PackagingEnd est une bonne cible pour l'appel, car il survient juste après la génération de web.xml.

eventPackagingEnd = {  ->
     // for each js file under grails-app/views move to web-app/js
}

Mettre à jour

Si vous souhaitez que les fichiers javascript soient simplement "maillés", vous pouvez le faire en utilisant des liens symboliques, par exemple:

.

grails-app / views / view1 / index.js - > webapp / js / view1 / index.js

Pour autant que je sache, il n'y a aucun moyen de forcer Grails à diffuser directement du contenu en dehors de l'application Web.

Vous pouvez également utiliser JavaScript, mais cela peut avoir des conséquences sur les performances.

Les fichiers Javascript appartiennent à <g:javascript src="index.js" />.

Ensuite, vous pouvez les référencer à l'aide de <=>.

L’idée est bonne, mais Grails a cette structure de répertoires pour une raison. Le dossier de vues est destiné à un certain type d'artefact (vues).

Vous pouvez cloner la structure de votre dossier de vues sous web-inf, mais cela vous donne plus de travail, car je suppose que l'idée est de garder les fichiers liés proches les uns des autres pour des raisons de commodité.

Même si je ne suis pas enthousiaste à l'idée de stocker du code JavaScript avec la vue, j'ai adoré l'idée de Robert de participer au processus de construction en utilisant des événements de construction pour copier les sources JavaScript dans le bon répertoire! Si vous décidez de vous engager dans cette voie, vous pourriez aussi bien compresser les sources pendant que vous y êtes. La ShrinkSafe est une bibliothèque populaire.

Je ne pense pas que vous soyez autorisé à accéder à js à l'intérieur des vues /

si vous avez besoin de faire cela ... voici le truc

  1. créez votre js et renommez-le avec myjs.gsp (utilisez " ") iniside _myjs.gsp tapez vous js
... écrivez vous js ici ...
  1. dans votre gsp (par exemple: index.gsp, view.gsp, etc.) tapez cette balise pour vous télécharger js

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top