我想将变量传递给该模板,让它渲染,然后将生成的HTML作为字符串。
我怎么能在Express中做到这一点?
答案 0 :(得分:24)
根据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
答案 1 :(得分:1)
您不需要使用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)
})