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.
Aquí hay una buena evaluación de varios motores http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
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.
Echa un vistazo a la página wiki Node js modules. Han enumerado todos los motores de plantillas que soportan node.js.
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
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 funciones.
He escuchado cosas buenas sobre {dust} http://akdubya.github.com/dustjs/#dust
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 .
Honestamente, el mejor y más simple motor de plantillas para Node.js es Placas (IMHO) ( https://github.com/flatiron/plates ). También puede consultar el marco de Flatiron MVC para Node.js ( http://flatiron.org ).
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 :)
Utilizo 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 probablemente como si usas django.
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.
Pruebe "vash" - asp.net mvc como 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
// sample
var tmpl = vash.compile(''<hr/>@model.a,@model.b<hr/>'');
var html = tmpl({"a": "hello", "b": "world"});
res.write(html);