¿Hay un motor de plantillas para Node.js? [cerrado]
271
Estoy experimentando con la construcción de una aplicación web completa usando Node.js. ¿Existe un motor de plantillas similar a (por ejemplo) el motor de plantillas de Django o similar que al menos le permite extender las plantillas base?
Me acabo de enterar de que el motor JavaScript V8 es más rápido que Ruby, PHP y Python. Increíblemente rápido para un lenguaje dinámico. Sin embargo, es más lento que Java y C #.
Nosredna
77
@Nosredna: ¿Cómo puede Java ser más rápido que cualquier otra cosa? ;)
Daniel Sloof
27
@Daniel Java es bastante rápido en estos días, superando todo menos Ada, C y C ++ en los puntos de referencia de Debian Shootout.
Mentalikryst
20
Cualquiera que no se preocupe por la sintaxis, la productividad y cualquier otra cosa que no sea el rendimiento, debe usar Raphters (marco web para C)
Pablo B.
66
node.js no se trata del lenguaje. Se trata totalmente del diseño y la forma en que js maneja IO, lo cual es brillante. Podría hacer que los marcos web de ruby se ejecuten rápidamente si rediseña sus bibliotecas IO.
julx
Respuestas:
166
Consulte la página wiki de Node js modules. Han enumerado todos los motores de plantillas que admiten node.js.
Jade es genial. Acabo de comenzar a usarlo, así que no puedo hablar de su rendimiento, pero me gusta la sintaxis. Y el soporte incorporado en Express es una ventaja.
broofa
3
el rendimiento es suficiente, las plantillas deben almacenarse en caché de todos modos. Además recuerda a escalar horizontalmente, no verticalmente, de lo contrario puede ser que también no utilizar un motor de plantillas en absoluto y sólo algunas funciones / concats
tjholowaychuk
14
Hay nuevos motores de plantillas todo el tiempo.
underscore.js agrega una gran cantidad de soporte de programación funcional a js y tiene plantillas.
Pulgares arriba para underscore.js. Impresionante biblioteca, la uso tanto para mi lado del cliente como para el trabajo de node.js. Su motor de plantillas se basa en el motor JS Micro Templating de John Resig ( ejohn.org/blog/javascript-micro-templating ) que he usado muchas veces antes. Afaik es tu mejor opción en este punto cuando trabajas con node.js.
Debería echar un vistazo a node-asyncEJS , que está diseñado explícitamente para tener en cuenta la naturaleza asincrónica de node.js. Incluso permite bloques de código asíncrono dentro de la plantilla.
Puede probar sin barba (está inspirado en soldadura / placas):
Por ejemplo:
{ post:{ title:"Next generation templating: Start shaving!", text:"TL;DR You should really check out beardless!", comments:[{text:"Hey cool!"},{text:"Really gotta check that out..."}]}}
<h1>Next generation templating:Start shaving!</h1><p>TL;DR You should really check out beardless!</p><div><div class="comment"><p>Hey cool!</p></div><div class="comment"><p>Really gotta check that out...</p></div></div>
Sea más descriptivo en su respuesta sobre su código y el enlace al que se refirió. Consulte: Cómo responder
askmish
Sería interesante cómo procesar realmente el archivo o llenar variables dentro del Nodo
Julian F. Weinert
6
He trabajado en un puerto bastante completo del lenguaje de plantillas Django para el proyecto djangode de Simon Willisons (Funciones de utilidades para node.js que toman prestados algunos conceptos útiles de Django).
No es similar a las plantillas de Django, ya que las plantillas de Django tienen una buena documentación. EJS es difícil de superar y terminarás leyendo su código fuente solo para entender lo que está disponible para ti.
5
ADVERTENCIA: JinJs ya no se mantiene. Sigue funcionando pero no es compatible con la última versión de express.
Puedes intentar usar jinjs . Es un puerto de Jinja, un muy buen sistema de plantillas de Python. Puede instalarlo con npm de esta manera:
Las plantillas de cierre de Google son un sistema de plantillas de JavaScript nativo y un ajuste aparentemente natural con NodeJS. Aquí hay algunas instrucciones para integrarlos.
Node.js no entiende DOM ... PURE usa el DOM, pero ya que hace cadenas de él. Esto es interesante de investigar. Perdón por el ruido.
Mic
2
Hay un puerto del motor de plantillas Django para JavaScript. Sin embargo, no se ha actualizado durante mucho tiempo, pero aún puede tener suficientes características.
Prueba Yajet también. ;-) Es uno nuevo que acabo de lanzar ayer, pero lo estoy usando por un tiempo y es estable y rápido (las plantillas se compilan en una función JS nativa).
Tiene IMO la mejor sintaxis posible para un motor de plantillas, y un conjunto de características enriquecidas a pesar de su pequeño tamaño de código (8.5K minificado). Tiene directivas que le permiten introducir condicionales, iterar matrices / hashes, definir componentes de plantilla reutilizables, etc.
Interesante, buen trabajo mishoo. ¿Tiene alguna ventaja sobre EJS?
trusktr
0
Encontré hogan.js en Twitter y me lo recomendó Tim O'Reilly en su sitio. No tengo mejores prácticas con eso, pero confío en Twitter y O'Reilly. Deberías intentarlo...
Puede usar dojox.dtl de DojoToolkit.org. Tenga en cuenta que dojo 1.7 puede ejecutarse en NodeJS y funcionar como una biblioteca del lado del servidor. Si está interesado, puedo darle un ejemplo simple.
Respuestas:
Consulte la página wiki de Node js modules. Han enumerado todos los motores de plantillas que admiten node.js.
fuente
Debería poder usar mustache.js, si no funciona, envíeme los problemas y lo solucionaré porque estoy a punto de usarlos en node.js de todos modos.
http://github.com/janl/mustache.js
Sé que funciona sin un DOM porque un montón de aplicaciones independientes CouchDB lo están utilizando en un servidor de visualización Spidermonkey.
fuente
Si te gusta haml, pero quieres algo aún mejor, visita http://jade-lang.com para el nodo, también escribí haml.js :)
fuente
Hay nuevos motores de plantillas todo el tiempo.
underscore.js agrega una gran cantidad de soporte de programación funcional a js y tiene plantillas.
Y justo hoy escuché sobre esto: http://github.com/SamuraiJack/Shotenjin-Joosed
fuente
Debería echar un vistazo a node-asyncEJS , que está diseñado explícitamente para tener en cuenta la naturaleza asincrónica de node.js. Incluso permite bloques de código asíncrono dentro de la plantilla.
Aquí un ejemplo de la documentación:
fuente
Puede probar sin barba (está inspirado en soldadura / placas):
Por ejemplo:
Su plantilla:
Salida:
fuente
He trabajado en un puerto bastante completo del lenguaje de plantillas Django para el proyecto djangode de Simon Willisons (Funciones de utilidades para node.js que toman prestados algunos conceptos útiles de Django).
Vea la documentación aquí .
fuente
Uso Twig con Symfony y ahora estoy incursionando en node.js, así que estoy viendo https://github.com/justjohn/twig.js y https://github.com/paularmstrong/swig , que podrás probablemente como si usas django.
fuente
Si está buscando un enfoque minimalista para las plantillas, puede consultar la plantilla JSON .
Una alternativa más completa es EJS . Es un poco más similar a algo que obtendrías de Django.
Su kilometraje puede variar para cada uno de estos: están diseñados para un entorno Javascript del navegador y no para Node.js.
fuente
ADVERTENCIA: JinJs ya no se mantiene. Sigue funcionando pero no es compatible con la última versión de express.
Puedes intentar usar jinjs . Es un puerto de Jinja, un muy buen sistema de plantillas de Python. Puede instalarlo con npm de esta manera:
en template.tpl:
en su template.js:
La salida será:
Lo estamos desarrollando activamente, una buena documentación debería llegar muy pronto.
fuente
haml es una buena opción para node.js
http://github.com/creationix/haml-js
haml-js
html
fuente
He escuchado cosas buenas sobre {dust} http://akdubya.github.com/dustjs/#dust
fuente
Pruebe "vash" - asp.net mvc como la sintaxis de razor para node.js
https://github.com/kirbysayshi/Vash
también pago: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
fuente
Las plantillas de cierre de Google son un sistema de plantillas de JavaScript nativo y un ajuste aparentemente natural con NodeJS. Aquí hay algunas instrucciones para integrarlos.
fuente
¿Intentaste PURE ?
Si lo prueba, siéntase libre de publicar cualquier problema que pueda enfrentar en el foro
Si bien fue diseñado principalmente para el navegador, funciona bien con Jaxer y Rhino.
Todavía no conozco node.js, pero si puede almacenar en caché algunos JS y funciones en la memoria, la velocidad debería ser aún más impresionante.
fuente
Hay un puerto del motor de plantillas Django para JavaScript. Sin embargo, no se ha actualizado durante mucho tiempo, pero aún puede tener suficientes características.
http://code.google.com/p/jtl-javascript-template/
fuente
Prueba Yajet también. ;-) Es uno nuevo que acabo de lanzar ayer, pero lo estoy usando por un tiempo y es estable y rápido (las plantillas se compilan en una función JS nativa).
Tiene IMO la mejor sintaxis posible para un motor de plantillas, y un conjunto de características enriquecidas a pesar de su pequeño tamaño de código (8.5K minificado). Tiene directivas que le permiten introducir condicionales, iterar matrices / hashes, definir componentes de plantilla reutilizables, etc.
fuente
Encontré hogan.js en Twitter y me lo recomendó Tim O'Reilly en su sitio. No tengo mejores prácticas con eso, pero confío en Twitter y O'Reilly. Deberías intentarlo...
fuente
Aquí hay una buena evaluación de varios motores http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
fuente
Honestamente, el mejor y más simple motor de plantillas para Node.js es (IMHO) Plates ( https://github.com/flatiron/plates ). También puede consultar el marco Flatiron MVC para Node.js ( http://flatiron.org ).
fuente
Puede usar dojox.dtl de DojoToolkit.org. Tenga en cuenta que dojo 1.7 puede ejecutarse en NodeJS y funcionar como una biblioteca del lado del servidor. Si está interesado, puedo darle un ejemplo simple.
fuente