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?
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?
Respuestas:
Consulte la página wiki de Node js modules. Han enumerado todos los motores de plantillas que admiten node.js.
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.
Si te gusta haml, pero quieres algo aún mejor, visita http://jade-lang.com para el nodo, también escribí haml.js :)
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
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:
<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>
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..."} ]
}
}
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>
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í .
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.
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.
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:
npm install jinjs
en template.tpl:
I say : "{{ sentence }}"
en su template.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.
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">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>
He escuchado cosas buenas sobre {dust} http://akdubya.github.com/dustjs/#dust
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
// sample
var tmpl = vash.compile('<hr/>@model.a,@model.b<hr/>');
var html = tmpl({"a": "hello", "b": "world"});
res.write(html);
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.
¿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.
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.
Aquí hay una buena evaluación de varios motores http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
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 ).