【问题标题】:node.js Express - How to get partial views asynchronouslynode.js Express - 如何异步获取部分视图
【发布时间】:2011-08-25 18:53:55
【问题描述】:

我有一个布局 - 导航菜单。在快速教程中,只有老式页面加载。整个旧页面被丢弃,并下载一个包含所有布局、视图和部分视图的新页面。我希望导航菜单保留。那么我该怎么做呢?

如果我对这个网页架构有误解,请指导我。

【问题讨论】:

  • 您是说希望部分页面像新的 google 搜索页面一样,只动态加载页面的一部分?
  • 那么你想要的并不是真正的“表达”,而只是普通的旧 ajax。
  • 我有类似my blog post about re-using views on the client中解释的功能

标签: node.js views express


【解决方案1】:

正如@drachenstern 所说,您只想渲染部分 HTML 片段,而不是包括布局在内的整个文档。您可以使用以下命令告诉 express 跳过布局:

res.render('sometemplate', {layout: false});

如果您想寻找不同于全页浏览器加载的 Ajax 请求,请使用 req.xhr 标志 as documented here

这样你甚至可以做到

res.render('sometemplate', {layout: !req.xhr});

【讨论】:

  • 您选择 req.isXMLHttpRequest 而非别名 req.xhr 的任何原因 ;)
  • 这只是一个更清晰的名称。如果可以的话,我通常更喜欢更容易阅读的代码,而不是更容易编写的代码。
  • 对我来说req.isXMLHttpRequest 返回未定义,使用 express 3.x,有什么猜测吗?
  • 在 express 3.x 中它只是 req.xhr
【解决方案2】:

你也可以使用 res.partial() 专门用于渲染局部。

以下是其用法示例,其中“browse.jade”是模板的名称:

exports.browse = function(req, res){
  var Contact = mongoose.model('Contact');
  Contact.where({}).asc('surname', 'given_name', 'org').run(function(err, results) {
    res.partial('browse', { 
        locals: { data: results }
    });
  });
};

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 2016-02-28
相关资源
最近更新 更多