2012-04-10 4 views
3

Ich bin neu in Node.js und versuche zu lernen. Von dem, was ich verstanden habe, ist es üblich, eine Template-Engine (zB Jade) zu verwenden, sogar für CSS (zB Stylus). Um ehrlich zu sein, alle Tutorials, die ich dort gesehen habe, beinhalten eine Template-Engine, wenn es um das Layout geht.Node.js ohne Vorlage-Engine

Die Sache ist, dass ich nicht eine Vorlage-Engine verwenden möchte, weil ich denke, dass es unnötig komplex ist.

Here ist ein Link zu einem Muster für Node (leider funktioniert es aus irgendeinem Grund nicht), aber Option 1 sollte keine Template-Engine für das Layout verwenden.

Also, was ist der einfachste Weg, Node.js und Mongodb mit "normalen" HTML (5) zu kombinieren? Ist es beispielsweise möglich, HMTL5 Boilerplate with Node zu verwenden?

Antwort

3

Mit Express, würden Sie einfach die html5 in der Antwort senden:

app.get('/', function(req, res){ 
    res.send('<header>Hello World</header>'); 
}); 

Aber ich würde sagen, dass in den meisten Fällen eine Template-Engine Komplexität nicht hinzufügen. Die Trennung von Bedenken vereinfacht die Darstellung dynamischer Inhalte.

+0

Also muss ich alle HTML5 in die Antwort einbetten? Ist das der einzige Weg? Ich hatte gehofft, dass es möglich wäre, den Servercode vom Clientcode zu trennen. – holyredbeard

+3

Das ist, was eine Templating-Engine ist;) – DanS

9

Wenn Sie statisches HTML verwenden, brauchen Sie auf der Serverseite kein Templating. Sie können Ihre HTML-Dateien mit Express/Connect static middleware, zum Beispiel leicht bedienen:

app.use(express.static(__dirname + '/public')); 

setzte dann ein index.html zu Ihrem öffentlichen Ordner.

Auch ich denke, Sie können kopieren und fügen Sie die gesamte h5bp in Ihren Öffentlichen Ordner und es sollte funktionieren.

2

Zum ersten Mal meine eigene Frage zu beantworten. Ich möchte nur teilen, dass ich einen Konverter von HTML zu Jade gefunden habe (Template Engine). Dies ist definitiv eine gute Sache, die eine Menge Komplexität für mich zumindest entfernt, auch wenn es immer noch eine Template-Engine beinhaltet.

http://html2jade.aaron-powell.com/

+0

Werfen Sie einen Blick auf die Jade-Dokumentation: http://jade-lang.com/ Es dauert nicht lange, um die Syntax zu lernen. – DanS

3

Hier sind auf diese meine Gedanken.

Wenn Sie nur statische html dient, ist es offensichtlich, dass Sie jede Template-Engine nicht benötigen, da Sie nur den HTML-Code in der Antwort puffern kann, oder die Connect statische Middleware verwenden.

Aber Dinge werden interessant, wenn Sie mit dynamischen Inhalt beschäftigen müssen.

Dies ist, wo Template-Engines gut sind, da sie Möglichkeiten bieten, Ihre Daten mit dem HTML zu integrieren. Wenn Sie die Vorlagen-Engine ersetzen möchten, benötigen Sie eine Bibliothek, die HTML- und DOM-Manipulationen durchführen kann. Ich kann von zwei Alternativen denken:

  • jsdom und Bibliotheken, die auf sie (wie fill.js) sind bauen.
    Mit Jsdom können Sie serverseitige jQuery verwenden, um Ihre Ansichten zu erstellen, oder sogar YUI.
    Allerdings hat es einige Nachteile:
    • es ist langsam und umständlich
    • es ist ein Schmerz unter Windows zu installieren, da es auf nativen Module hängt
    • ich es nicht HTML-Fragmente oder unvollständig html zu analysieren (vielleicht bekommen könnte kennt jemand eine Möglichkeit, um diesen)

  • die zweite Alternative einige leichten Bibliotheken zu verwenden, wäre die html verarbeiten, ohne den vollen DOM. Bisher habe ich zwei Libs gefunden, die auf diese gut sind:
    • cheerio - eine kleine Bibliothek, die -wie Selektoren
    • plates auf jQuery basiert - eine Bibliothek, die Daten bindet an Markup

Beide sind sehr sauber meiner Meinung nach, und ein guter Ausgangspunkt, um Vorlagen loszuwerden :)
Es kann andere geben, denen ich nicht bewusst bin, aber Sie bekommen die Idee.