我希望以呈现大多数其他页面的方式呈现HTML,使用res.render(),它被设置为使用手柄。
但是我不想只返回HTML,我想把HTML放进一个对象,沿着一些其他的信息,然后返回它。
我知道我可以加载一个新的handlebar示例,但我不想这样做,因为我需要所有的helper和partials。有没有一种方法可以使用res.render使用的handlebar示例进行渲染,但只返回HTML?
我想做这样的事情:
router.get('/list', function(req, res, next) {
Users((err, users)=>{
if (err) console.log(err);
var html = res.render('user-list', {
layout: false,
users: users,
});
res.json({
html: html,
otherInfo: otherInfo
});
});
});'
但显然不能这样做,因为res.render将开始向用户发送HTML。
有什么建议吗?
编辑:我想明白了,只是不能接受我自己的答案
2条答案
按热度按时间yvfmudvl1#
使用req.app访问express示例,该示例具有方法render,该方法将返回HTML。该函数是异步的,因此需要提供回调,而不是将其设置为变量。
应用程序渲染()文档
6rvt4ljy2#
stackers提供的解决方案非常好用。但是,我的视图无法访问应用程序的对象。例如,我无法从i18next包访问我的翻译。因此,我想提出另一个解决方案inspired by zemirco,res.render with third parameter: