web-dev-qa-db-fra.com

Existe-t-il un moteur de template pour Node.js?

J'essaie de créer une application Web complète à l'aide de Node.js. Existe-t-il un moteur de gabarit similaire au moteur de gabarit Django ou similaire (par exemple) permettant au moins d'étendre les gabarits de base?

271
Seb

Consultez la page wiki Node _ js modules. Ils ont répertorié tous les moteurs de templates supportant node.js.

165
RameshVel

Vous devriez pouvoir utiliser moustache.js. Si cela ne fonctionne pas, envoyez-moi les problèmes et je vais le faire réparer 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 parce que de nombreuses applications autonomes CouchDB l'utilisent dans un serveur de vues Spidermonkey.

52
mikeal

Si vous aimez haml, mais que vous voulez quelque chose d'encore mieux, jetez un œil à http://jade-lang.com pour node, j'ai aussi écrit haml.js :)

40
tjholowaychuk

Il y a de nouveaux moteurs de templates tout le temps.

underscore.js ajoute beaucoup de support de programmation fonctionnelle à js, et a des templates.

Et juste aujourd'hui, j'ai entendu parler de cela: http://github.com/SamuraiJack/Shotenjin-Joosed

15
Nosredna

Vous devriez jeter un oeil à node-asyncEJS , qui est explicitement conçu pour prendre en compte la nature asynchrone de node.js. Il permet même des blocs de code asynchrone à 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>
13
Fabian Jakobs

Vous pouvez essayer imberbe (inspiré par la soudure/les 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 template:

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

Sortie:

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

J'ai travaillé sur un port assez complet du langage de template Django de Simon Willisons projet djangode (fonctions utilitaires pour node.js qui empruntent des concepts utiles à Django).

Voir la documentation ici .

6
AHM

J'utilise Twig avec Symfony et je m'adonne maintenant à node.js. Je regarde donc https://github.com/justjohn/twig.js et https://github.com/paularmstrong/swig , qui vous plaira probablement si vous utilisez Django.

6
Tac Tacelosky

AVERTISSEMENT: JinJs n'est plus maintenu. Il fonctionne toujours mais n'est pas compatible avec la dernière version de express.

Vous pouvez essayer d'utiliser jinjs . C’est un port de la Jinja, un très bon système de templates 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.

5
fe_lix_

Si vous recherchez une approche minimaliste des modèles, vous pouvez vérifier 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’eux - ils sont conçus pour un environnement Javascript avec navigateur, et non pour Node.js.

5
ShZ

J'ai entendu de bonnes choses à propos de {poussière} http://akdubya.github.com/dustjs/#dust

4
triptych

Essayez "vash" - asp.net mvc comme syntaxe rasoir pour node.js

https://github.com/kirbysayshi/Vash

également 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);
4
ramr

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">[email protected]
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>
4
Mark Lindell

Les modèles de fermeture de Google sont un système de gabarit JavaScript natif et un ajustement apparemment naturel avec NodeJS. Voici quelques instructions pour les intégrer.

3
Adam Crossland

Il existe un port du moteur de templates Django vers JavaScript. Cependant, il n'a pas été mis à jour depuis longtemps, mais il peut encore avoir suffisamment de fonctionnalités.

http://code.google.com/p/jtl-javascript-template/

2
Orange Box

Essayez Yajet aussi. ;-) C'est un nouveau que je viens de publier hier, mais je l'utilise depuis un moment et il est stable et rapide (les modèles sont compilés pour une fonction JS native).

Il possède la meilleure syntaxe possible pour un moteur de modèle et un ensemble de fonctionnalités enrichi malgré sa petite taille de code (8,5 Ko 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èles réutilisables, etc.

2
mishoo

Avez-vous essayé PURE ?
Si vous essayez, n'hésitez pas à poster vos problèmes au forum

Bien que conçu principalement 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.

2
Mic

Honnêtement, le moteur de template le plus simple 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 ).

0
trusktr
0
Marius Andreiana

J'ai trouvé hogan.js sur Twitter et recommandé par Tim O'Reilly sur son site. Je n'ai pas de meilleure pratique avec cela, mais j'ai confiance sur Twitter et O'Reilly. Tu devrais essayer...

0
KimKha