Node.js 如何在nodeJS/express中使用EJS模板引擎而不执行“res.render”?

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一个JSON对象,其中包含从我的一个EJS模板生成的HTML片段

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
能够接受回调。:/我的错