2014-04-07 13 views
5

Ich bin mit Knoten im Allgemeinen beginnen, und ich versuche, eine Website ohne Express zu tun. Ich möchte nichtsdestotrotz ejs verwenden, um meine HTML zu injizieren und das ist, wo mein Problem ist ... Wie füge ich die ejs.render (...) an die Antwort?How to: Verwenden Sie EJS ohne Express

PS: Ich weiß, es könnte eine bessere Option sein, Express zu verwenden, aber ich möchte wissen, wie es funktioniert, bevor es überbrückt.

Etwas wie:

var ejs = require("ejs"); 

function index (response, request, sequelize) { 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    test_data = "test data"; 
    response.end(ejs.render("./views/home.html",test_data)); 
} 

exports.index = index; 

Aber das funktioniert^_^

Dank!

+0

"Ich möchte wissen, wie es funktioniert, bevor es überbrückt." lese dann ausdrückliche Quelle, wie schwer kann es sein? – mpm

+1

nicht ausdrücklich ... reguläre Knoten – Manatax

+0

Sie wollen lernen, wie Express tut es.Schaut mir logisch, Express Express Code lesen, wie Express ruft ejs.Anyway scheint auch logisch ejs wird nicht über die Tatsache, dass Ihre Vorlage kümmern ist in einer anderen Datei, nimmt aber stattdessen eine Template-Zeichenfolge als Argument von render. – mpm

Antwort

2

Es gibt ein Projekt namens Consolidate.js, das eine gemeinsame API für viele Vorlagen-Engines bietet. Dies stellt sicher, dass sie alle austauschbar sein können. Wenn Sie Vorlagen direkt rendern möchten, möchten Sie mit dieser API kompatibel sein.

Beispielcode aus dem Consolidate.js README:

var cons = require('consolidate'); 
cons.swig('views/page.html', { user: 'tobi' }, function(err, html){ 
    if (err) throw err; 
    console.log(html); // Or write to your `res` object here 
}); 

Diese Probe ist für Swig, aber ähnlichen Code funktioniert für EJS oder einen der kompatibelen Motoren.

+0

Gibt es eine Möglichkeit, es ohne eine Schnittstelle zu tun? – Manatax

+1

Auch wenn es nicht die Antwort war, nach der ich suchte, weil ich spezifisch für ejs sein wollte, glaube ich, dass diese Antwort besser ist, weil sie für jede Template Engine geeignet ist. – Manatax

4

Zunächst einmal müssen Sie ejs installieren -> $ npm ejs

Einfaches Beispiel --save installieren:

main.ejs:

<p> <%= exampleRenderEjs %> </p> 

server.ejs

var ejs = require('ejs'); 
var fs = require('fs'); 

var htmlContent = fs.readFileSync(__dirname + '/main.ejs', 'utf8'); 

var htmlRenderized = ejs.render(htmlContent, {filename: 'main.ejs', exampleRenderEjs: 'Hello World!'}); 

console.log(htmlRenderized); 
+0

Super Antwort. Hat mir immens geholfen. –