2012-11-13 12 views

cevap

26

Aşağıdaki deneyebilirsiniz: template.jade Şablonunuzda yoludur

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

. Ve şuna benzer:

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

Yani fn() fonksiyonunun girdi olarak modelinizi geçmesi ve bunun çıkış html olacaktır.

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

Ve seni https://github.com/andris9/Nodemailer E-postaları –

+0

teşekkür göndermek tavsiye, her şey mükemmel çalışıyor –

+0

Bunu [app.render] (http://expressjs.com/api kullanabilirsiniz. html # app.render) bir dizgiyi [bu] 'da belirtildiği gibi bir dizgiye dönüştürmek için (http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats -the-difference # answer-15404507) daha yeni cevap. –

12

Ayrıca

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

cevapları (örneğe ifade) geri arama işlemek gelen dize yakalamak yeşim şablonu yükleme ve bunu derlemek için tüm çalışma Yerliler kullanarak HTML. Ancak, HTML e-postaları gönderiyorsanız, çoğu müşterinin tüm CSS sınıflarını çıkardığının farkında olmanız gerekir. Tüm CSS sınıflarını satır içi uygulamak için Juice (veya benzeri bir şey) kullanın.

6

Şablonun fs.readFile() ile açılması artık gerekli değildir. Jade API'sı, doğrudan bir dosyadan derleyen compileFile() yöntemini içerir.

var jade = require("jade"); 

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

Yeşim API ayrıca doğrudan hatta daha basit hale verilen bir dosyadan bir html dize döndürür renderFile() yöntemi de içerir.

var jade = require("jade"); 

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

Doğru. İşte, hataları nasıl kontrol edeceğinizle ilgili bir soru: http://stackoverflow.com/questions/7283896/how-can-i-catch-a-rendering-error-missing-template-in-node-js-using- express-js/34709515 # 34709515 – Wtower

+0

bu yeşim versiyonu bu mu? benim renderFile (v1.2.0) 3 argüman bekler – akcasoy

+0

@akcasoy Bunlar en güncel dokümanlar: http://jade-lang.com/api/. 'RenderFile()' açıklaması en altta yer alır ve 2 argümanın gerekli olduğunu gösterir. – Nocturno