11

我想将我的变量传递到该模板中,让它呈现,然后将生成的 HTML 作为字符串获取。

我怎样才能在 Express 中做到这一点?

4

2 回答 2

26

根据 ejs 版本,以下应该可以工作。

var ejs = require('ejs'),
    fs = require('fs'),
    file = fs.readFileSync(__dirname + '/template.ejs', 'ascii'),
    rendered = ejs.render(file, { locals: { items:[1,2,3] } });

console.log(rendered);

如果尚未安装 ejs,您可能需要安装它。

cd;npm install ejs
于 2011-07-06T01:35:49.900 回答
5

你不需要使用 fs。这是内置在 EJS 中的(不确定它是否是在发布之前的答案时)。

但是它会返回一个 Promise,因此您可以使用 Async/await 来获取值:

let html
async function myFunc() {
    html = await ejs.renderFile(filePath, data, options)
} 
console.log(html)

或者,它提供了一个回调函数:

ejs.renderFile(filePath, data, options, function(err, html) {
    console.log(html)
})
于 2018-06-12T07:39:38.740 回答