如何编译玉石模板文件来获取string?
我在我的玉模板文件中有一个视图逻辑。 如何将模型传递给玉,并通过电子邮件进一步发送html?
您可以尝试以下方法:
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
是template.jade
的path。 它看起来像这样:
!!! html head title= 'Hello world' body p Hello #{name}!
所以你把你的模型作为fn()函数的input,它的输出将是html。
<!DOCTYPE html><html><head><title>Hello world</title></head><body><p>Hello Oleg!</p></body></html>
你也可以从rendercallback中捕获string(例子)
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!
不再需要用fs.readFile()
打开模板。 Jade API包含直接从文件编译的compileFile()
方法。
var jade = require("jade"); var locals = {name: "Linus"}, render = jade.compileFile('template.jade'), html = render(locals);
Jade API还包括renderFile()
方法,该方法直接从给定文件返回一个htmlstring,使得它更简单。
var jade = require("jade"); var locals = {name: "Linus"}, html = jade.renderFile('template.jade', locals);
所有的答案都可以用来加载jade模板,并使用本地代码将其编译为HTML。 但是,如果您要发送HTML电子邮件,则需要注意,大多数客户端会去除所有CSS类。 使用Juice (或类似的东西)来内嵌所有的CSS类。