如何编译玉石模板文件来获取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.jadetemplate.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类。