J'expérimente avec la construction d'une application Web entière en utilisant Node.js. Existe-t-il un moteur de modèle similaire (par exemple) au moteur de modèle Django ou similaire qui vous permet au moins d'étendre les modèles de base?
J'expérimente avec la construction d'une application Web entière en utilisant Node.js. Existe-t-il un moteur de modèle similaire (par exemple) au moteur de modèle Django ou similaire qui vous permet au moins d'étendre les modèles de base?
Réponses:
Consultez la page wiki des modules Node js. Ils ont répertorié tous les moteurs de modèles prenant en charge node.js.
Vous devriez pouvoir utiliser moustache.js, si cela ne fonctionne pas, envoyez-moi les problèmes et je le réparerai car je suis sur le point de les utiliser dans node.js de toute façon.
http://github.com/janl/mustache.js
Je sais que cela fonctionne sans DOM car un tas d'applications autonomes CouchDB l'utilisent dans un serveur de vue Spidermonkey.
Si vous aimez le haml, mais que vous voulez quelque chose de mieux, consultez http://jade-lang.com pour le nœud, j'ai également écrit haml.js :)
Il y a tout le temps de nouveaux moteurs de création de modèles.
underscore.js ajoute beaucoup de support de programmation fonctionnelle à js, et a des modèles.
Et aujourd'hui, j'en ai entendu parler: http://github.com/SamuraiJack/Shotenjin-Joosed
Vous devriez jeter un œil à node-asyncEJS , qui est explicitement conçu pour prendre en compte la nature asynchrone de node.js. Il autorise même des blocs de code asynchrones à l'intérieur du modèle.
Voici un exemple de la documentation:
<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>
Vous pouvez essayer sans barbe (il est inspiré par les soudures / plaques):
Par exemple:
{ 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..."} ]
}
}
Votre modèle:
<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>
Production:
<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>
J'ai fait un travail sur un portage assez complet du langage de modèle Django pour le projet djangode Simon Willisons (fonctions utilitaires pour node.js qui empruntent quelques concepts utiles à Django).
Voir la documentation ici .
J'utilise Twig avec Symfony et je joue maintenant dans node.js, donc je regarde https://github.com/justjohn/twig.js et https://github.com/paularmstrong/swig , que vous allez probablement comme si vous utilisez django.
Si vous recherchez une approche minimaliste des modèles, vous pouvez consulter le modèle JSON .
Une alternative plus complète est EJS . C'est un peu plus semblable à quelque chose que vous obtiendriez de Django.
Votre kilométrage peut varier pour chacun d'entre eux - ils sont conçus pour un environnement Javascript de navigateur, et non Node.js.
AVERTISSEMENT: JinJs n'est plus maintenu. Il fonctionne toujours mais n'est pas compatible avec la dernière version d'express.
Vous pouvez essayer d'utiliser jinjs . C'est un portage de la Jinja, un très bon système de création de modèles en Python. Vous pouvez l'installer avec npm comme ceci:
npm install jinjs
dans template.tpl:
I say : "{{ sentence }}"
dans votre template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
La sortie sera:
I say : "Hello, World!"
Nous le développons activement, une bonne documentation devrait bientôt arriver.
haml est un bon choix pour 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>
J'ai entendu de bonnes choses à propos de {dust} http://akdubya.github.com/dustjs/#dust
Essayez "vash" - asp.net mvc comme la syntaxe de rasoir pour node.js
https://github.com/kirbysayshi/Vash
consultez également: 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);
Les modèles de fermeture de Google sont un système de modèles nativement JavaScript et un ajustement apparemment naturel avec NodeJS. Voici quelques instructions pour les intégrer.
Avez-vous essayé PURE ?
Si vous essayez, n'hésitez pas à publier tout problème que vous pourriez rencontrer sur le forum
Bien qu'il ait été principalement conçu pour le navigateur, il fonctionne bien avec Jaxer et Rhino.
Je ne connais pas encore node.js mais si vous pouvez mettre en cache certains JS et fonctions en mémoire, la vitesse devrait être encore plus impressionnante.
Il existe un portage du moteur de gabarit Django vers JavaScript. Cependant, il n'a pas été mis à jour depuis longtemps, mais il peut encore avoir suffisamment de fonctionnalités.
Essayez également Yajet . ;-) C'est une nouvelle que je viens de publier hier, mais je l'utilise depuis un moment maintenant et elle est stable et rapide (les modèles sont compilés en fonction JS native).
Il a IMO la meilleure syntaxe possible pour un moteur de modèle, et un ensemble de fonctionnalités riche malgré sa petite taille de code (8.5K minifié). Il a des directives qui vous permettent d'introduire des conditions, d'itérer des tableaux / hachages, de définir des composants de modèle réutilisables, etc.
Voici une bonne évaluation de plusieurs moteurs http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Honnêtement, le moteur de modèle le meilleur et le plus simple pour Node.js est (IMHO) Plates ( https://github.com/flatiron/plates ). Vous pouvez également consulter le framework Flatiron MVC pour Node.js ( http://flatiron.org ).