我可以在不向用户使用 res.render / return 信息的情况下以 express 形式呈现 html 吗?

Can I render html in express without using res.render / return info to the user?

我想以与呈现大多数其他页面相同的方式呈现 HTML,使用 res.render(),它被设置为使用把手。

但我不想只 return HTML,我想将 HTML 与其他一些信息一起放入一个对象中,然后 return那个。

我知道我可以加载一个新的 handlebars 实例,但我不想这样做,因为我需要所有的助手和部分。有没有一种方法可以使用 res.render 使用的相同车把实例进行渲染,但 return 只是 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。

有什么建议吗?

编辑:想通了,就是不能接受我自己的回答

使用req.app访问express实例,它有方法render,它将return HTML。该函数是异步的,因此您需要提供回调,而不是将其设置为变量。

app.render() docs