私のヒスイテンプレートファイルにはビューロジックがあります。モデルをjadeに渡し、電子メールでさらに送信するためにhtmlを入手するにはどうすればよいですか?jadeテンプレートファイルをコンパイルして文字列を取得するには?
答えて
あなたは次のことを試すことができます: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>
また、あなたがレンダリングコールバック(一例を表す)
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!
の回答からヒスイのテンプレートをロードし、それをコンパイルするためのすべての作業を文字列をキャッチすることができます地元の人々を使ったHTML。しかし、HTMLメールを送信する場合は、ほとんどのクライアントがすべてのCSSクラスを削除することに注意する必要があります。 Juice(またはそのようなもの)を使用して、すべてのCSSクラスをインラインで適用します。
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);
正しい。ここでは、エラーをチェックする方法に関する関連する質問があります:http://stackoverflow.com/questions/7283896/how-can-i-catch-a-rendering-error-missing-template-in-node-js-using- express-js/34709515#34709515 – Wtower
この玉バージョンはそれですか?私のrenderFile(v1.2.0)は3つの引数を期待しています – akcasoy
@akcasoyこれらは最新のドキュメントです:http://jade-lang.com/api/ 'renderFile()'の記述は最下部にあり、2つの引数が必要であることを示しています。 – Nocturno
- 1. 文字列からサブ文字列を取得するには?
- 2. ケースレットフィールドの名前を文字列/シンボルとして取得するには、シェイプレスを使用してコンパイル時に?
- 3. PHP GD:imagedataをバイナリ文字列として取得するには?
- 4. Javaでコンパイル時にLong.MAX_VALUEの文字列値を取得する方法は?
- 5. 文字列から文字列の後に文字列を取得します
- 6. 文字列のエスケープ文字のインデックスを取得するには?
- 7. モデルフィールドを文字列として取得
- 8. JSON.parseは、私は次の文字列を取得していた文字列
- 9. 特定の文字列を文字列として取得する方法
- 10. JsonCPP値を文字列として取得する方法は?
- 11. プロパティ名を文字列として取得する方法は?
- 12. SQL行を取得して文字列に設定する
- 13. 取得文字列ハイフン/ダッシュ( - )Iは、例えば、URLから文字列を取得しようとしてい
- 14. 文字列を検索して文字列から次の文字列までのすべてを取得
- 15. 文字列内の合計サブ文字列を取得する
- 16. 文字列のSHA-256文字列を取得する
- 17. 2文字列と親文字列の間の文字列を取得する
- 18. 入力文字列の位置を取得して両端に文字列を取得
- 19. C#で文字列の前に文字列を取得する方法は?
- 20. 文字列をutf-8に変換しても文字列として結果を取得する方法
- 21. Googleのアプリケーションを使用して文字列から文字を取得する
- 22. text.getを使用して文字列と文字を取得する -
- 23. 文字列[0]文字列の先頭文字を取得
- 24. 文字列の配列のメモリサイズを取得するには?
- 25. PHPで文字列の配列を取得するには?
- 26. jsonオブジェクト配列から文字列を取得するには?
- 27. Swift 3:文字列から配列を取得するには
- 28. 文字列私は、文字列のラインを取得
- 29. ハッシュマップ値を使用して文字列を取得するエラー
- 30. 文字列を取得して複製を削除する
そして、私は電子メールに –
感謝を送信するためにあなたにhttps://github.com/andris9/Nodemailerをお勧めします、すべてが完璧に動作 –
あなたは[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)より最近の回答。 –