Sto sperimentando la creazione di un'intera applicazione Web utilizzando Node.js. Esiste un motore modello simile (ad esempio) al motore modello Django o simile che almeno ti consente di estendere i modelli base?
Sto sperimentando la creazione di un'intera applicazione Web utilizzando Node.js. Esiste un motore modello simile (ad esempio) al motore modello Django o simile che almeno ti consente di estendere i modelli base?
Risposte:
Dai un'occhiata alla pagina wiki dei moduli jode Node. Hanno elencato tutti i motori di template che supportano node.js.
Dovresti essere in grado di utilizzare moustache.js, se non funziona inviami i problemi e lo risolverò perché sto per usarli comunque in node.js.
http://github.com/janl/mustache.js
So che funziona senza un DOM perché un sacco di app standalone CouchDB lo usano in un server di visualizzazione Spidermonkey.
Se ti piace haml, ma vuoi qualcosa di ancora meglio, dai un'occhiata a http://jade-lang.com per node, ho scritto anche haml.js :)
Ci sono sempre nuovi motori di template.
underscore.js aggiunge un sacco di supporto per la programmazione funzionale a js e ha un modello.
E proprio oggi ho sentito parlare di questo: http://github.com/SamuraiJack/Shotenjin-Joosed
Dovresti dare un'occhiata a node-asyncEJS , che è esplicitamente progettato per tenere conto della natura asincrona di node.js. Permette persino blocchi di codice asincrono all'interno del modello.
Ecco un esempio della documentazione:
<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>
Puoi provare senza barba (è ispirato alla saldatura / ai piatti):
Per esempio:
{ 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..."} ]
}
}
Il tuo modello:
<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>
Produzione:
<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>
Ho lavorato su una porta abbastanza completa del linguaggio modello Django per il progetto djangode di Simon Willisons (Funzioni di utilità per node.js che prendono in prestito alcuni concetti utili da Django).
Vedi la documentazione qui .
Uso Twig con Symfony e ora mi diletto in node.js, quindi guardo https://github.com/justjohn/twig.js e https://github.com/paularmstrong/swig , che farai probabilmente ti piace se usi django.
Se stai cercando un approccio minimalista ai modelli, puoi dare un'occhiata a Modello JSON .
Un'alternativa più completa è EJS . È un po 'più simile a qualcosa che otterresti da Django.
Il tuo chilometraggio può variare per ciascuno di questi: sono progettati per un ambiente Javascript del browser e non per Node.js.
ATTENZIONE: JinJs non viene più mantenuto. Funziona ancora ma non è compatibile con l'ultima versione di Express.
Potresti provare a usare jinjs . È una porta del Jinja, un ottimo sistema di templatura Python. Puoi installarlo con npm in questo modo:
npm install jinjs
in template.tpl:
I say : "{{ sentence }}"
nel tuo template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
L'output sarà:
I say : "Hello, World!"
Lo stiamo sviluppando attivamente, una buona documentazione dovrebbe arrivare abbastanza presto.
haml è una buona scelta per 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>
Ho sentito cose positive su {dust} http://akdubya.github.com/dustjs/#dust
Prova "vash" - asp.net mvc come la sintassi del rasoio per node.js
https://github.com/kirbysayshi/Vash
anche checkout: 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);
I modelli di chiusura di Google sono un sistema di modelli nativamente JavaScript e una combinazione apparentemente naturale con NodeJS. Ecco alcune istruzioni per integrarli.
Hai provato PURO ?
Se lo provi, sentiti libero di pubblicare qualsiasi problema tu possa incontrare al forum
Sebbene sia stato progettato principalmente per il browser, funziona bene con Jaxer e Rhino.
Non conosco ancora node.js ma se riesci a memorizzare nella memoria cache alcuni JS e funzioni, la velocità dovrebbe essere ancora più impressionante.
C'è un porto del motore di template di Django su JavaScript. Tuttavia, non è stato aggiornato da molto tempo ma potrebbe avere ancora abbastanza funzionalità.
Prova anche Yajet . ;-) È uno nuovo che ho appena rilasciato ieri, ma lo sto usando da un po 'di tempo ed è stabile e veloce (i modelli sono compilati in una funzione JS nativa).
Ha IMO la migliore sintassi possibile per un motore di template e un ricco set di funzionalità nonostante le sue piccole dimensioni del codice (8,5K minimizzato). Dispone di direttive che consentono di introdurre condizionali, iterare array / hash, definire componenti riutilizzabili del modello ecc.
Ecco una buona valutazione di diversi motori http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Onestamente, il motore di template migliore e più semplice per Node.js è (IMHO) Plates ( https://github.com/flatiron/plates ). Potresti anche voler dare un'occhiata al framework MVC di Flatiron per Node.js ( http://flatiron.org ).