2012-11-13 28 views

Trả lời

26

Bạn có thể thử như sau:

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

đâu template.jade là con đường cho mẫu của bạn. Và nó trông giống như sau:

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

Vì vậy, bạn chuyển mô hình của mình làm đầu vào của hàm fn() và đầu ra của nó sẽ là html.

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

Và tôi khuyên bạn nên https://github.com/andris9/Nodemailer để gửi email –

+0

cảm ơn, tất cả mọi thứ hoạt động hoàn hảo –

+0

Bạn có thể sử dụng [app.render] (http://expressjs.com/api. html # app.render) để hiển thị mẫu cho chuỗi, như được đề cập trong [this] (http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats -the-difference # answer-15404507) câu trả lời gần đây hơn. –

12

Ngoài ra bạn có thể nắm bắt những chuỗi từ làm cho callback (thể hiện ví dụ)

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

Những câu trả lời tất cả các công việc cho tải mẫu ngọc bích và biên dịch nó để HTML sử dụng người dân địa phương. Tuy nhiên nếu bạn đang gửi email HTML, bạn cần lưu ý rằng hầu hết các máy khách đều loại bỏ tất cả các lớp CSS. Sử dụng Juice (hoặc một cái gì đó giống như nó) để áp dụng tất cả các lớp CSS nội tuyến.

6

Mở mẫu với fs.readFile() không còn cần thiết nữa. API Jade bao gồm phương thức compileFile() biên dịch trực tiếp từ tệp.

var jade = require("jade"); 

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

Phương thức Jade API cũng bao gồm phương thức renderFile() trả về trực tiếp chuỗi html từ một tệp nhất định, làm cho nó trở nên đơn giản hơn.

var jade = require("jade"); 

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

Đúng. Đây là câu hỏi liên quan đến cách kiểm tra lỗi: http://stackoverflow.com/questions/7283896/how-can-i-catch-a-rendering-error-missing-template-in-node-js-using- express-js/34709515 # 34709515 – Wtower

+0

phiên bản ngọc nào? renderFile của tôi (v1.2.0) mong đợi 3 đối số – akcasoy

+0

@akcasoy Đây là các tài liệu mới nhất: http://jade-lang.com/api/. Mô tả 'renderFile()' nằm ở phía dưới cùng và hiển thị 2 đối số được yêu cầu. – Nocturno

Các vấn đề liên quan