Integración GrooScript en Grails

17 views
Skip to first unread message

Jorge Franco

unread,
Jun 16, 2013, 4:18:35 PM6/16/13
to madri...@googlegroups.com
Hola!

No sé si conocéis GrooScript (convertir código Groovy a JavaScript). Bueno el caso es que este finde he estado pensando como integrarlo un poco con Grails. Recurro a vosotros, que tenéis mucha más experiencia desarrollando con Grails, para ver que se os parece o qué ideas podéis aportar.

Mi idea es realizar todo el trabajo en el cliente, y que grails se limite a servir y guardar los datos en la base de datos. Imaginaos un gsp para mostrar un listado de clientes:

<html>
  <head> .... </head>
  <body>
    <div id="list"></div>
  </body>
</html>

Y la parte que muestra el listado sería el siguiente archivo groovy:

$('#list').html(Builder.html {
  ul {  
    Client.each {
      p "Name: ${it.name} City: ${it.city}"
    }
  }
})

Lo que quiero hacer es convertir este segundo código a Javascript, e incrustarlo en el html. Tenía pensado añadir un tag en el html original, indicando el fichero groovy, para que convierta el fichero a javascript y lo incruste en el html. Lo que pasa es que eso sería añadir un fichero más, lo que puede ser un poco engorroso, aunque se podría considerar como un template.

<div id="list"><grooscript:template name="file.groovy"></div>

En desarrollo se montaría el html en cada petición, pero en producción el html se construiría una sola vez, lo que supondría que grails / apache servirían un fichero estático. El cliente cogería el html y si hiciera falta pediría a Grails (vía REST o otra cosa parecida) los datos. Se podrían hacer más cosas, como tener los datos almacenados en el cliente con HTML 5, y sólo pedirle a grails los cambios si es que los hubiera.

Bueno ¿qué pensáis? ¿Se os ocurre una forma mejor o más práctica para insertar código groovy en los gsps?

Muchas gracias y un saludo.

Alberto Vilches

unread,
Jun 17, 2013, 12:18:18 PM6/17/13
to madri...@googlegroups.com
¿Porque no metes el código Groovy como cuerpo de la etiqueta? Así:

<groo:script>
$('#list').html(Builder.html {
  ul {  
    Client.each {
      p "Name: ${it.name} City: ${it.city}"
    }
  }
})
</groo:script>

dentro del código de tu tag, con que hagas un def script = body() ya tienes el txt para enviárselo a Groo, que te convierte el JS y renderizas el resultado...


2013/6/16 Jorge Franco <jorge.fr...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "MadridGUG: Grupo de Usuarios de Groovy de Madrid" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a madrid-gug+...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a madri...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/madrid-gug.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Un saludo.
Alberto Vilches
Twitter: @albertovilches

Jorge Franco

unread,
Jun 18, 2013, 2:31:20 AM6/18/13
to madri...@googlegroups.com
Fenómeno :), no sabía que se podía hacer eso, añadiré esa opción de conversión. Lo que he visto es que por ejemplo si pongo ${loquesea} dentro de <groo:script>, grails intenta poner el valor, con lo que al final quita todos esos fragmentos. ¿Hay alguna forma de decirle a Grails que no toque lo que hay dentro del tag?

Muchas gracias y un saludo.

Alberto Vilches

unread,
Jun 18, 2013, 6:57:05 AM6/18/13
to madri...@googlegroups.com
Me temo que vas a tener que escaparlo los dolares con \$...


2013/6/18 Jorge Franco <jorge.fr...@gmail.com>
Reply all
Reply to author
Forward
0 new messages