javascript template-engine node.js

javascript - ¿Hay un motor de plantillas para Node.js?



template-engine (21)

Estoy experimentando con la construcción de una aplicación web completa utilizando Node.js. ¿Hay un motor de plantillas similar a (por ejemplo) el motor de plantillas de Django o similar que al menos le permita extender las plantillas base?


¿Has probado PURE ?
Si lo intentas, no dudes en publicar cualquier problema que puedas encontrar en el forum

Si bien fue diseñado principalmente para el navegador, funciona bien con Jaxer y Rhino.

No sé node.js todavía, pero si puede almacenar en caché algunos JS y funciones en la memoria, la velocidad debería ser aún más impresionante.



Debería echar un vistazo a node-asyncEJS , que está diseñado explícitamente para tener en cuenta la naturaleza asíncrona de node.js. Incluso permite bloques de código asíncronos dentro de la plantilla.

Aquí un ejemplo de la documentación:

<html> <head> <% ctx.hello = "World"; %> <title><%= "Hello " + ctx.hello %></title> </head> <body> <h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000) %></h1> <p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000) %></p> </body> </html>


Debería poder usar moustache.js, si no funciona, envíeme los problemas y lo arreglaré 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 una gran cantidad de aplicaciones independientes de CouchDB lo están utilizando en un servidor de vista Spidermonkey.



Encontré hogan.js de Twitter y lo recomendó Tim O''Reilly en su sitio. No tengo buenas prácticas con eso, pero confío en Twitter y O''Reilly. Deberías intentarlo...


Haml es una buena opción para node.js

http://github.com/creationix/haml-js

haml-js

!!! XML !!! strict %html{ xmlns: "http://www.w3.org/1999/xhtml" } %head %title Sample haml template %body .profile .left.column #date= print_date() #address= current_user.address .right.column #email= current_user.email #bio= current_user.bio

html

<?xml version=''1.0'' encoding=''utf-8'' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sample haml template </title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009 </div><div id="address">Richardson, TX </div></div><div class="right column"><div id="email">[email protected] </div><div id="bio">Experienced software professional... </div></div></div></body></html>


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 hoy mismo me enteré de esto: http://github.com/SamuraiJack/Shotenjin-Joosed




He trabajado en un puerto bastante completo del lenguaje de plantillas de 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 here .



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.


Prueba Yajet también. ;-) Es una nueva versión que acabo de lanzar ayer, pero la estoy usando por un tiempo y es estable y rápida (las plantillas se compilan en una función JS nativa).

Tiene IMO la mejor sintaxis posible para un motor de plantillas y un rico conjunto de funciones a pesar de su pequeño tamaño de código (8.5K minified). Tiene directivas que le permiten introducir condicionales, iterar arrays / hashes, definir componentes de plantillas reutilizables, etc.


Puede utilizar dojox.dtl de DojoToolkit.org. Tenga en cuenta que dojo 1.7 puede ejecutarse bien en NodeJS y funcionar como una biblioteca del lado del servidor. Si estás interesado, puedo darte un ejemplo simple.


Puedes probar beardless (está inspirado en soldaduras / 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..."} ] } }

Su plantilla:

<h1 data-template="post.title"></h1> <p data-template="post.text"></p> <div> <div data-template="post.comments" class="comment"> <p data-template="post.comments.text"></p> </div> </div>

Salida:

<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>


Si está buscando un enfoque minimalista para las plantillas, puede revisar 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 de Javascript de navegador, y no para Node.js.


Si te gusta Haml, pero quieres algo aún mejor, visita http://jade-lang.com para encontrar el nodo, también escribí Haml.js :)



ADVERTENCIA: JinJs ya no se mantiene. Todavía funciona pero no es compatible con la última versión de Express.

Podrías intentar usar jinjs . Es un puerto del Jinja, un muy buen sistema de plantillas Python. Puedes instalarlo con npm así:

npm install jinjs

en template.tpl:

I say : "{{ sentence }}"

en su plantilla.js:

jinjs = require(''jinjs''); jinjs.registerExtension(''.tpl''); tpl = require(''./template''); str = tpl.render ({sentence : ''Hello, World!''}); console.log(str);

La salida será:

I say : "Hello, World!"

Lo estamos desarrollando activamente, una buena documentación debería llegar muy pronto.