我在我的模板文件中有一個視圖邏輯。我怎樣才能將模型傳遞給玉,並獲得HTML通過電子郵件進一步發送?如何編譯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);
});
哪裏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>
您也可以趕上從呈現回調字符串(例如表達)
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還包括renderFile()
方法直接從給定的文件返回一個HTML字符串,使其更簡單。
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. 如何使用Prepros編譯模板來定義Jade中的basedir?
- 3. Sails JS鏈接器:編譯JADE模板
- 4. 編譯Jade模板時出現TypeError
- 5. 字符串文字模板 - 不同的行爲編譯器的
- 6. 編譯時文字字符串作爲模板參數
- 7. Grunt編譯Jade文件
- 8. 如何JADE/PUG模板文件
- 9. 如何編譯HTML表單模板HTML字符串
- 10. 如何以編程方式獲取Python編譯器字符串?
- 11. node.js/Jade - 如何預先編譯jade文件並緩存它?
- 12. Jade多個模板文件
- 13. 如何在Jade編譯之前在Jade模板中包含Javascript對象
- 14. 獲取Ruby模板的字符串?
- 15. 編譯.Jade爲.JS ...如何在Require.JS中用作主幹模板?
- 16. 使用模板字符串預編譯TypeScript Vue組件
- 17. 如何將「xaml字符串」模板轉換爲可編譯的xaml /控件
- 18. 爲jade模板編碼javascript
- 19. 翻譯模板字符串動態值
- 20. 通過搜索字符串獲取子字符串文本來獲取字符串的子字符串?
- 21. 編譯字符串
- 22. 字符串模板 - 結果從文件讀取時不同/從字符串
- 23. angularjs:前結束語模板字符串angular.element $編譯
- 24. 可能將剃刀模板編譯爲字符串?
- 25. 如何將angularJS中的變量插入到jade模板中的字符串(node.js)
- 26. 讀取一個文件到在編譯時間的字符串
- 27. 如何獲取文本和字符串?
- 28. 如何在Django模板中插入已翻譯的字符串?
- 29. Jade電子郵件模板
- 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)更近的回答。 –