2012-11-13 11 views

Odpowiedz

26

Można spróbować wykonać następujące czynności:

var jade = require('jade'), 
    fs = require('fs'); 

fs.readFile('template.jade', 'utf8', function (err, data) { 
    if (err) throw err; 
    console.log(data); 
    var fn = jade.compile(data); 
    var html = fn({name:'Oleg'}); 
    console.log(html); 
}); 

Gdzie template.jade to ścieżka do szablonu. I to wyglądać tak:

!!! 
html 
    head 
    title= 'Hello world' 
    body 
    p Hello #{name}! 

Więc zdać modelu jako wejście funkcji fn(), a wyjście z niego będzie html.

<!DOCTYPE html><html><head><title>Hello world</title></head><body><p>Hello Oleg!</p></body></html> 
+2

A ja polecam https://github.com/andris9/Nodemailer do wysyłania e-maili –

+0

dzięki, wszystko działa idealnie –

+0

Można użyć [app.render] (http://expressjs.com/api. html # app.render) do renderowania szablonu do napisu, jak wspomniano w [this] (http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats -the-difference # answer-15404507) nowsza odpowiedź. –

12

Ponadto można złapać ciąg z renderowanie zwrotnego (przykład wyrazić)

exports.test1 = function(req, res){ 
    res.render('test1', { title: 'test1' }, function(err, body) { 
    console.log(body); 
    }); 

    res.send('wooo'); 
}; 

test1.jade

div 
    = title 
p hello world! 
1

Odpowiedzi wszystkie prace do ładowania szablonu jade i kompilowanie go do HTML za pomocą locals. Jednak jeśli wysyłasz wiadomości HTML, musisz zdawać sobie sprawę, że większość klientów usuwa wszystkie klasy CSS. Użyj Juice (lub coś podobnego), aby zastosować wszystkie klasy CSS w linii.

6

Otwarcie szablonu za pomocą fs.readFile() nie jest już konieczne. Jade API zawiera metodę compileFile(), która kompiluje bezpośrednio z pliku.

var jade = require("jade"); 

var locals = {name: "Linus"}, 
    render = jade.compileFile('template.jade'), 
    html = render(locals); 

Jade API obejmuje również metodę renderFile() które bezpośrednio zwraca ciąg HTML z danego pliku, dzięki czemu jeszcze prostsze.

var jade = require("jade"); 

var locals = {name: "Linus"}, 
    html = jade.renderFile('template.jade', locals); 
+1

Prawidłowo. Oto istotne pytanie dotyczące sprawdzania błędów: http://stackoverflow.com/questions/7283896/how-can-i-catch-a-rendering-error-missing-template-in-node-js-using- express-js/34709515 # 34709515 – Wtower

+0

jade jest to wersja? mój renderFile (v1.2.0) oczekuje 3 argumentów – akcasoy

+0

@akcasoy Oto najnowsze dokumenty: http://jade-lang.com/api/. Opis 'renderFile()' jest na samym dole i pokazuje 2 argumenty są wymagane. – Nocturno

Powiązane problemy