2012-11-13 7 views

答えて

26

あなたは次のことを試すことができます:template.jadeはテンプレートへのパスです

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

!!! 
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

そして、私は電子メールに –

+0

感謝を送信するためにあなたにhttps://github.com/andris9/Nodemailerをお勧めします、すべてが完璧に動作 –

+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も、直接それがさらに簡単になって、与えられたファイルからHTML文字列を返すrenderFile()方法を含みます。

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

関連する問題