如何编译jade模板文件来获取字符串?

Ole*_*ats 15 node.js pug

我在我的玉模板文件中有一个视图逻辑.如何将模型传递给j​​ade并获取html以通过电子邮件进一步发送?

xav*_*ard 26

您可以尝试以下方法:

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);
});
Run Code Online (Sandbox Code Playgroud)

template.jade模板的路径在哪里.它看起来像这样:

!!!
html
  head
    title= 'Hello world'
  body
    p Hello #{name}!
Run Code Online (Sandbox Code Playgroud)

所以你传递你的模型作为fn()函数的输入,它的输出将是html.

<!DOCTYPE html><html><head><title>Hello world</title></head><body><p>Hello Oleg!</p></body></html>
Run Code Online (Sandbox Code Playgroud)

  • 我建议你https://github.com/andris9/Nodemailer发送电子邮件 (2认同)

小智 13

你也可以从渲染回调中捕获字符串(表示例子)

exports.test1 = function(req, res){
  res.render('test1', { title: 'test1' }, function(err, body) {
    console.log(body);
  });

  res.send('wooo');
};
Run Code Online (Sandbox Code Playgroud)

test1.jade

div
  = title
p hello world!
Run Code Online (Sandbox Code Playgroud)


Noc*_*rno 6

fs.readFile()不再需要打开模板.Jade API包括compileFile()直接从文件编译的方法.

var jade = require("jade");

var locals = {name: "Linus"},
    render = jade.compileFile('template.jade'),
    html   = render(locals);
Run Code Online (Sandbox Code Playgroud)

Jade API还包括renderFile()直接从给定文件返回html字符串的方法,使其更简单.

var jade = require("jade");

var locals = {name: "Linus"},
    html   = jade.renderFile('template.jade', locals);
Run Code Online (Sandbox Code Playgroud)