我想res.send一个JSON对象,其中包含从我的一个EJS模板生成的HTML片段。
res.send({
status: "xyz",
timestamp: new Date(),
htmlContent: "" //=====> HTML snippet from template.ejs here
});
这有可能吗?谢谢!
答案 0 :(得分:1)
简答:是的,但我不推荐它。
长答案:是的,尽管您需要自己使用ejs模板库:
var ejs = require('ejs');
var template = ejs.compile('<h1>Template</h1><p><%= data %></p>'), options);
var renderedTemplate = template({data: 'My Data'});
//renderedTemplate would contain '<h1>Template</h1><p>My Data</p>'
这会给你你想要的。但实际上与使用res.render
没有多大区别。是的,express必须阅读视图文件,但这可以通过缓存模板来缓解(它确实如此)。你的模板在你的请求处理程序代码之外也是更好的,恕我直言。
答案 1 :(得分:1)
你可以&#34;渲染&#34;将ejs内容添加到变量中并将其添加到对象中。
var content='';
res.render('template', function(err, html) {
content = html;
});
res.send({
status: "xyz",
timestamp: new Date(),
htmlContent: content
});
如果您只想做这件事,那么我们可以缩短代码:
res.render('template', function(err, html) {
res.send({
status: "xyz",
timestamp: new Date(),
htmlContent: html
});
});