2012-11-13 28 views

回答

26

你可以嘗試以下方法:

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); 
}); 

哪裏template.jade是路徑到您的模板。它看起來像這樣:

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

所以你通過模型爲FN()函數的輸入,並且它的輸出將是HTML。

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

,我建議你https://github.com/andris9/Nodemailer發送電子郵件 –

+0

感謝,一切完美 –

+0

您可以使用[app.render(http://expressjs.com/api。 html#app.render)將模板呈現爲字符串,如[this]中所述(http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats -the-difference#answer-15404507)更近的回答。 –

12

您也可以趕上從呈現回調字符串(例如表達)

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

的答案加載玉模板,並將其編制各項工作落實使用本地化的HTML。但是,如果您要發送HTML電子郵件,則需要注意大多數客戶端都會刪除所有CSS類。使用Juice(或類似的東西)來內聯應用所有的CSS類。

6

不再需要使用fs.readFile()打開模板。 Jade API包括直接從文件編譯的compileFile()方法。

var jade = require("jade"); 

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

玉API還包括renderFile()方法直接從給定的文件返回一個HTML字符串,使其更簡單。

var jade = require("jade"); 

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

正確。這裏是一個有關如何檢查錯誤的相關問題:http://stackoverflow.com/questions/7283896/how-can-i-catch-a-rendering-error-missing-template-in-node-js-using- express-js/34709515#34709515 – Wtower

+0

哪個玉版是那個?我的renderFile(v1.2.0)需要3個參數 – akcasoy

+0

@akcasoy這些是最新的文檔:http://jade-lang.com/api/。 'renderFile()'描述位於底部,顯示2個參數是必需的。 – Nocturno

相關問題