2016-05-02 18 views
0

Ich schreibe ein Shell-Skript, und möchte es verwenden, indem ich meine Variablen in einer JSON-Datei zu halten.Grundlegende Templating mit Nunjucks

Ich bin ein Anfänger zu Javascript, und so kann nicht den Dreh raus wie man Nunjucks verwenden, um meine Vorlagen zu rendern. Kannst du mir bitte helfen, dass dieses einfache Beispiel funktioniert?

Hier ist mein aktueller Versuch. (Ich habe npm installiert)

In meinem Projektverzeichnis:

$ npm install nunjucks 

Ich schaffe sample.njk mit folgendem Inhalt:

{{ data }} 

Und index.js mit folgendem Inhalt:

var nunjucks = require('nunjucks') 
nunjucks.configure({ autoescape: true }); 
nunjucks.render('sample.njk', { data: 'James' }); 

Mein Projektverzeichnis sieht dann aus wie:

index.js node_modules/ sample.njk 

I index.js mit Knoten als

$ node index.js 

laufen Wie bekomme ich es ausgeben (auf der Kommandozeile oder in eine neue Datei):

James 

nach die Vorlage bearbeiten?

Ich habe versucht, gulp-nunjucks und gulp-nujucks-render zu betrachten, aber da ist zu viel los und ich kann hier nicht einmal eine einfache Aufgabe erledigen.

Wenn ich meine Daten in einer JSON-Datei definiere, muss ich sie nur als Kontext in der nunjucks.render()-Funktion übergeben, oder?

Danke für Ihre Hilfe.

+1

Die nunjucks.render wahrscheinlich gemacht String zurückgibt, so benutzen Sie einfach 'var data = nunjucks.render (...);' und 'console.log (Daten);' oder ' fs.writeFile ('/ Pfad/zu/Datei.html', Daten, Funktion() {}) ' – Molda

Antwort

1

Hängt davon ab, was Sie mit den vom Nunj-Render ausgegebenen Daten erreichen möchten. Wenn Sie es einfach auf das Terminal drucken möchten, funktioniert ein einfacher console.log();.

In Express nimmt res.render einen optionalen dritten Parameter, der ein Fn ist. Sie würden es als solches tun:

var nunjucks = require('nunjucks'); 
nunjucks.configure({ autoescape: true }); 
nunjucks.render('sample.njk', { data: 'James' }, function (err, output) { 

    // If there's an error during rendering, early return w/o further processing 
    if (err) { 
     return; 
    } 

    // The render fn calls the passed-in fn with output as a string 
    // You can do whatever you'd like with that string here 
    console.log(output); 

});