Ich experimentiere mit dem Erstellen einer gesamten Webanwendung mit Node.js. Gibt es eine Vorlagen-Engine, die (zum Beispiel) der Django-Vorlagen-Engine oder ähnlichem ähnelt und es Ihnen zumindest ermöglicht, Basisvorlagen zu erweitern?
Ich experimentiere mit dem Erstellen einer gesamten Webanwendung mit Node.js. Gibt es eine Vorlagen-Engine, die (zum Beispiel) der Django-Vorlagen-Engine oder ähnlichem ähnelt und es Ihnen zumindest ermöglicht, Basisvorlagen zu erweitern?
Antworten:
Schauen Sie sich die Wiki-Seite zu Node js modules an. Sie haben alle Template-Engines aufgelistet , die node.js unterstützen.
Sie sollten in der Lage sein, mustache.js zu verwenden. Wenn es nicht funktioniert, senden Sie mir die Probleme und ich werde sie beheben, da ich sie sowieso in node.js verwenden werde.
http://github.com/janl/mustache.js
Ich weiß, dass es ohne DOM funktioniert, weil eine Reihe von CouchDB-Standalone-Apps es auf einem Spidermonkey-Ansichtsserver verwenden.
Wenn du haml magst, aber etwas noch besseres willst, schau auf http://jade-lang.com nach node, ich habe auch haml.js geschrieben :)
Es gibt ständig neue Template-Motoren.
underscore.js bietet js viel Unterstützung für funktionale Programmierung und verfügt über Vorlagen.
Und erst heute habe ich davon gehört: http://github.com/SamuraiJack/Shotenjin-Joosed
Sie sollten sich node-asyncEJS ansehen , das explizit so konzipiert ist, dass es die asynchrone Natur von node.js berücksichtigt. Es erlaubt sogar asynchrone Codeblöcke innerhalb der Vorlage.
Hier ein Beispiel aus der Dokumentation:
<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>
Sie können bartlos versuchen (es ist von Schweißnähten / Platten inspiriert):
Beispielsweise:
{ 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..."} ]
}
}
Ihre Vorlage:
<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>
Ausgabe:
<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>
Ich habe einige Arbeiten an einem ziemlich vollständigen Port der Django-Vorlagensprache für das Djangode-Projekt von Simon Willisons durchgeführt (Dienstprogrammfunktionen für node.js, die einige nützliche Konzepte von Django ausleihen).
Siehe die Dokumentation hier .
Ich verwende Twig mit Symfony und beschäftige mich jetzt mit node.js. Daher schaue ich auf https://github.com/justjohn/twig.js und https://github.com/paularmstrong/swig , die Sie verwenden werden wahrscheinlich wie wenn Sie Django verwenden.
Wenn Sie nach einem minimalistischen Ansatz für Vorlagen suchen, können Sie sich JSON Template ansehen .
Eine umfassendere Alternative ist EJS . Es ist ein bisschen ähnlicher wie etwas, das man von Django bekommen würde.
Ihr Kilometerstand kann für jeden dieser Punkte variieren. Sie sind für eine Browser-Javascript-Umgebung und nicht für Node.js konzipiert.
WARNUNG: JinJs wird nicht mehr gewartet. Es funktioniert immer noch, ist aber nicht mit der neuesten Version von Express kompatibel.
Sie könnten versuchen, Jinjs zu verwenden . Es ist eine Portierung des Jinja, eines sehr guten Python-Template-Systems. Sie können es mit npm wie folgt installieren:
npm install jinjs
in template.tpl:
I say : "{{ sentence }}"
in Ihrer template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
Die Ausgabe wird sein:
I say : "Hello, World!"
Wir entwickeln es aktiv weiter, eine gute Dokumentation sollte bald kommen.
haml ist eine gute Wahl für 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>
Ich habe gute Dinge über {Staub} http://akdubya.github.com/dustjs/#dust gehört
Versuchen Sie "vash" - asp.net mvc wie die Rasierersyntax für node.js
https://github.com/kirbysayshi/Vash
auch zur Kasse: 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);
Die Closure Templates von Google sind ein natives JavaScript-Template-System und passen scheinbar natürlich zu NodeJS. Hier finden Sie einige Anweisungen zur Integration.
Hast du PURE ausprobiert ?
Wenn Sie es versuchen, können Sie Probleme im Forum veröffentlichen
Obwohl es hauptsächlich für den Browser entwickelt wurde, funktioniert es gut mit Jaxer und Rhino.
Ich kenne node.js noch nicht, aber wenn Sie einige JS und Funktionen im Speicher zwischenspeichern können, sollte die Geschwindigkeit noch beeindruckender sein.
Es gibt eine Portierung der Django-Template-Engine für JavaScript. Es wurde jedoch schon lange nicht mehr aktualisiert, verfügt jedoch möglicherweise noch über genügend Funktionen.
Versuchen Sie es auch mit Yajet . ;-) Es ist eine neue, die ich gestern veröffentlicht habe, aber ich benutze sie jetzt schon eine Weile und sie ist stabil und schnell (Vorlagen werden zu einer nativen JS-Funktion kompiliert).
Es hat IMO die bestmögliche Syntax für eine Template-Engine und einen umfangreichen Funktionsumfang trotz seiner geringen Codegröße (8,5 KB minimiert). Es enthält Anweisungen, mit denen Sie Bedingungen einführen, Arrays / Hashes iterieren, wiederverwendbare Vorlagenkomponenten definieren usw. können.
Hier ist eine gute Bewertung mehrerer Engines: http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Ehrlich gesagt ist die beste und einfachste Template-Engine für Node.js (IMHO) Plates ( https://github.com/flatiron/plates ). Möglicherweise möchten Sie auch das Flatiron MVC-Framework für Node.js ( http://flatiron.org ) überprüfen .