2011-07-26 10 views
10

Quiero ser capaz de definir plantillas una vez y usarlas para procesar html tanto desde el lado del servidor como desde el lado del cliente. (Principio DRY y todo eso)Lenguaje de plantillas del lado del cliente con el compilador Java (plantilla DRY)

La API que estoy visualizando es simplemente esto: render (JSON, template) -> html.

Estoy usando un framework java (en realidad juego framwork, pero no creo que esto sea específico del framework).

He leído muchas preguntas similares, la más reciente y la más útil siendo: Templating language for both client-side and server-side rendering.

Estoy más o menos de acuerdo con el autor en que los contendientes obvios como: Moustache y las plantillas de cierre de Google no lo van a cortar. (Por razones de ver ese puesto)

Requisitos:

  • debe: del lado del cliente haciendo
  • debe: la caché del cliente de la plantilla-archivos
  • bonito: del lado del cliente 'de compilación vez ejecutar muchas veces de la plantilla de archivos de ayunar Javascript de código
  • debe: del lado del servidor de representación
  • bonito: aplicación java Native

He visto un montón de publicaciones que sugieren el uso de Node.js para la creación de plantillas en el lado del servidor. Aunque esto definitivamente funcionaría (las plantillas de subrayado, Handlebarsjs, EJS funcionarían bien) Estoy luchando para ver cómo comunicar/combinar/integrar Node.js con Java, después de todo, todavía es el marco de Java que necesita generar el JSON

He visto publicaciones que mencionan alguna comunicación de prueba de concepto entre una JVM y node.js (a través de http o utilizando JNDI). Sin embargo, ninguna biblioteca, y mucho menos probada en batalla, parece estar disponible en este momento.

Para resumir, ¿qué motor de plantillas del lado del cliente sugeriría que se ejecutara también en java (o con algunos aros, se puede llamar desde un jvm)? Y si ese 'aro' resulta ser Node.js, ¿qué formas de comunicación/biblioteca sugerirías usar?

+0

por qué no usar node.js en lugar de Play? Hay muchos sistemas SSJS ejecutándose en la JVM como Rhino y ringojs – Raynos

+0

porque soy de origen java y Estoy tratando con una aplicación existente. Solo 'quiero' refactorizar la presentación, parte de ella. En cuanto a ringojs, lo he investigado, pero Node.js parece funcionar mucho mejor que ringojs (por lo que he leído). Tal vez no debería preocuparme por eso cuando la alternativa sería conectarse a través de http a Node.js debido a la latencia de la red, pero esa es una de las cosas que trato de descubrir. –

+0

¿Estás seguro de que necesitas la representación del lado del servidor? Supongo que después de aplicar la plantilla en el servidor no harás nada más con el HTML resultante, excepto escupirlo en la respuesta ... Por otro lado, podrías ejecutar un lenguaje de plantillas JavaScript dentro de la JVM con un tiempo de ejecución JavaScript-2-JVM. Genere el código JSON en el lado de Java, páselo al lado JS y recopile el resultado. Solo he hecho eso en .NET con JScript.NET compilado dinámicamente pero también debería ser capaz de hacerlo funcionar en Java de una manera similar. – miguelv

Respuesta

1

Voy por Moustache por el momento y anticipo una implementación java para Handlebars.js. Una vez que existe, la ruta de refactorización no debe ser tan pronunciada.

EDITAR - Abril 2012

Ok, la actualización de este para futuras referencias:

  • estoy externalización de plantillas de servidor para Node.js.
  • comunicación entre java y node.js implementada usando sockets. (vea: Sending data from node.js to Java using sockets para donde obtuve la idea)
  • Como ahora solo necesito un cliente-lib (o uno mejor que se ejecute en javascript tanto en el cliente como en el servidor usando el nodo), puedo elegir más libremente.Después de haber acostumbrado a bigote, he elegido el analizador Hogan (por los chicos de Twitter) (http://twitter.github.com/hogan.js/)

100% seco (incluso los mixins del lado del cliente y i18n-paquetes provienen de la misma fuente. Además , Hogan puede precompilar el lado del servidor de plantillas y abrir una conexión con el cliente para que el cliente no tiene que analizar la plantilla ya en la primera conexión.

¿es rápido? relámpago ...

+0

su solución suena interesante. los inconvenientes que veo aquí que su lado del servidor debe ejecutar nodejs también .. – oak

Cuestiones relacionadas