将视图渲染到 ExpressJS 中的变量中(用于 AJAX 响应)

Posted

技术标签:

【中文标题】将视图渲染到 ExpressJS 中的变量中(用于 AJAX 响应)【英文标题】:Render view into a variable in ExpressJS (for AJAX response) 【发布时间】:2013-08-06 14:40:49 【问题描述】:

我想将部分视图的内容(用 Jade 编写)加载到 Bootstrap 模式对话框中。为此,我使用 AJAX 调用。我可以只返回生成的 html 并将其加载到模式中,但是我需要额外的数据来处理渲染的视图。 我希望能够返回这样的对象(解析为 JSON):

response = 
  some_data: 'blablabla',
  some_more_data: [5, 8, 10, 67],
  my_html: '<div>HTML rendered from the Jade template</div>'
;

有没有办法做到这一点?现在我可以像这样返回呈现的 HTML:

res.render('employees', layout: false);

但是我怎样才能将它存储在一个变量中以与更多数据一起返回,而不必进行更多的 AJAX 调用呢?

【问题讨论】:

【参考方案1】:

在 express 中,您可以使用 app.render 和回调来呈现视图并获取 html:

app.render('employees', layout: false, function(err, html)
  var response = 
    some_data: 'blablabla',
    some_more_data: [5, 8, 10, 67],
    my_html: html
  ;
  res.send(response);
);

【讨论】:

似乎就是我要找的东西!但是有没有办法在不必传递整个app 参数的情况下做到这一点?上面的代码在 routes.js 文件中,我不确定如何使用/传递 app 那里... 你可以通过res.app在你的路由中获取一个实例 完美运行!非常感谢!

以上是关于将视图渲染到 ExpressJS 中的变量中(用于 AJAX 响应)的主要内容,如果未能解决你的问题,请参考以下文章

ExpressJS 3.0 如何将 res.locals 传递给玉视图?

异步和递归目录扫描,用于 Nodejs 和 Expressjs 中的文件列表

如何将 ASP.NET 视图模型中的 JSON 保存到 JavaScript 变量中?

渲染 Marionette/Backbone 视图时将变量传递到 Handlebars 模板

如何在控制器中获取视图然后渲染数据并将其传递给 ajax

如何在node / express js中访问hbs引擎视图目录中文件夹内的文件