2014-04-07 13 views
5

Zaczynam od węzła w ogóle, a ja próbuję zrobić stronę bez ekspresowych. Chciałbym jednak, aby używać ejsa do wstrzykiwania mojego html i to jest mój problem ... Jak dołączyć ejs.render (...) do odpowiedzi?Jak używać ejs bez ekspresu

PS: Wiem, że to może być lepsza opcja do korzystania z ekspresu, ale chcę wiedzieć, jak działa pod nim przed mostowaniem go.

Coś jak:

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; 

Ale to działa^_^

Dzięki!

+0

"Chcę wiedzieć, jak działa pod nim przed mostowaniem go." czytaj zatem źródło ekspresowe, jak trudne może być? – mpm

+1

nie wyrazić ... zwykły węzeł – Manatax

+0

Chcesz się nauczyć, jak ekspresowe. Logiczne jest dla mnie, aby czytać w ekspresowym kodzie źródłowym, jak ekspresowe wywoływać ejs.Anyway wydaje się również logicznym ejs nie dba o to, że twój szablon znajduje się w innym pliku, ale zamiast tego przyjmuje ciąg szablonu jako argument renderowania. – mpm

Odpowiedz

2

Istnieje projekt o nazwie Consolidate.js, który zapewnia wspólny interfejs API dla wielu silników szablonów. Dzięki temu wszystkie mogą być wymienne. Jeśli chcesz renderować szablony bezpośrednio, chcesz być kompatybilny z tym interfejsem API.

Przykładowy kod z 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 
}); 

Ta próbka jest Swig, ale podobny kod działa dla EJS lub którykolwiek z kompatybilnych silników.

+0

Czy można to zrobić bez interfejsu? – Manatax

+1

Mimo że nie była to odpowiedź, której szukałem, ponieważ chciałem, aby była konkretna dla ejs, uważam, że ta odpowiedź jest lepsza, ponieważ jest przeznaczona dla dowolnego silnika szablonów. – Manatax

4

Przede wszystkim trzeba zainstalować EJS -> $ npm zainstalować EJS --save

prosty przykład:

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

Niesamowita odpowiedź. Pomógł mi ogromnie. –

Powiązane problemy