如何将EJS模板转换为字符串?

TIM*_*MEX 9 html javascript ejs node.js express

我想将变量传递给该模板,让它渲染,然后将生成的HTML作为字符串.

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

Lim*_*ime 25

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

您可能需要安装ejs(如果尚未安装).

cd;npm install ejs
Run Code Online (Sandbox Code Playgroud)


Swa*_*den 5

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

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

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

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

ejs.renderFile(filePath, data, options, function(err, html) {
    console.log(html)
})
Run Code Online (Sandbox Code Playgroud)