Node / Express - 响应中的多个渲染视图

Node / Express - Multiple Rendered Views in Response

我正在执行一个 AJAX 调用,我想 return 一个 JSON 响应,其中包含几个渲染的局部视图,我可以用它们来交换我的不同部分页。所以,例如:

{
    "searchResults": "<div>Some HTML string</div>",
    "paginationBar": "<div>Another HTML string</div>"
}

我的应用程序是在 Node/Express 上构建的,使用 Express-Handlebars 作为我的视图引擎。我的想法是在我的路线中做这样的事情:

if (req.xhr) {

    res.app.render('partials/search/products', {layout: 'ajax'}, function (err, html) {
            res.locals.renderedViews.searchResults = html;
        }
    );

    res.app.render('partials/search/pagination', {layout: 'ajax'}, function (err, html) {
            res.locals.renderedViews.pagination = html;
        }
    );

    res.json(renderedViews);

}

我该怎么做

如果定义了 res.app.render,您的代码看起来不错,但您需要嵌套它,因为呈现代码可能是异步的:

  var renderedViews = {};

  res.app.render('partials/search/products', {layout: 'ajax'}, function (err, html) {
    renderedViews.searchResults = html;

    res.app.render('partials/search/pagination', {layout: 'ajax'}, function (err, html) {
      renderedViews.pagination = html;

      res.json(renderedViews);
    });
  });