Node.js 如何在nodeJS/express中使用EJS模板引擎而不执行“res.render”?
我想res.send一个JSON对象,其中包含从我的一个EJS模板生成的HTML片段Node.js 如何在nodeJS/express中使用EJS模板引擎而不执行“res.render”?,node.js,express,ejs,templating,Node.js,Express,Ejs,Templating,我想res.send一个JSON对象,其中包含从我的一个EJS模板生成的HTML片段 res.send({ status: "xyz", timestamp: new Date(), htmlContent: "" //=====> HTML snippet from template.ejs here }); 这有可能吗?谢谢 简短回答:是的,但我不推荐 详细回答:是的,不过您需要自己使用ejs模板库: var ejs = require('ejs'); var
res.send({
status: "xyz",
timestamp: new Date(),
htmlContent: "" //=====> HTML snippet from template.ejs here
});
这有可能吗?谢谢 简短回答:是的,但我不推荐 详细回答:是的,不过您需要自己使用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>'
var ejs=require('ejs');
var template=ejs.compile('template'),选项);
var renderedTemplate=模板({data:'My data'});
//renderedTemplate将包含“模板我的数据”
这会给你你想要的。但老实说,它与仅使用
res.render
没有太大区别。是的,express将必须读取视图文件,但缓存模板(它确实这样做)可以缓解这一问题。您的模板最好位于请求处理程序代码IMHO之外。简短回答:是的,但我不建议这样做
详细回答:是的,不过您需要自己使用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>'
var ejs=require('ejs');
var template=ejs.compile('template'),选项);
var renderedTemplate=模板({data:'My data'});
//renderedTemplate将包含“模板我的数据”
这会给你你想要的。但老实说,它与仅使用res.render
没有太大区别。是的,express将必须读取视图文件,但缓存模板(它确实这样做)可以缓解这一问题。模板最好位于请求处理程序代码IMHO之外。您可以将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
});
});
您可以将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
});
});
谢谢我不知道,因为我以前从未使用过带有
res.render
的回调!因此,res.render
是同步的,即使它需要回调?不,对于回调,render
只是将解析的内容传递给回调的参数;这取决于你发送它。因为您希望将内容包装在JSON对象中,所以在发送之前,我只是将解析后的内容保存在稍后发送的位置。虽然这给了我一个想法来充实我的答案。。。请继续收看……谢谢!我不知道,因为我以前从未使用过带有res.render
的回调!因此,res.render
是同步的,即使它需要回调?不,对于回调,render
只是将解析的内容传递给回调的参数;这取决于你发送它。因为您希望将内容包装在JSON对象中,所以在发送之前,我只是将解析后的内容保存在稍后发送的位置。虽然这给了我一个想法来充实我的答案。。。请继续关注…我真的不知道res.render
能够接受回调。:/老实说,我不知道res.render
能够接受回调。:/我的错