我有一个布局 - 导航菜单。在快递教程中,只有老派的页面正在加载。整个旧页面将被丢弃,并且会下载一个新页面,其中包含所有布局,视图和部分视图。我想要导航菜单留下来。那我该怎么做?node.js Express - 如何异步获取部分视图
如果我可能弄错了这个网页架构请指导我。
我有一个布局 - 导航菜单。在快递教程中,只有老派的页面正在加载。整个旧页面将被丢弃,并且会下载一个新页面,其中包含所有布局,视图和部分视图。我想要导航菜单留下来。那我该怎么做?node.js Express - 如何异步获取部分视图
如果我可能弄错了这个网页架构请指导我。
正如@drachenstern所说,你只想呈现部分HTML片段,而不是包括布局在内的整个文档。你可以告诉快递使用跳过布局:
res.render('sometemplate', {layout: false});
如果您想寻找Ajax请求以区别于全页浏览器加载,使用req.xhr
标志as documented here
因此你甚至可以不要
res.render('sometemplate', {layout: !req.xhr});
你选择'req.isXMLHttpRequest'的任何理由在别名'req.xhr'上;) – 2011-06-17 06:00:54
它只是一个更清晰的名字。如果我有选择,我通常更喜欢更容易阅读代码的代码,这些代码更易于编写。 – 2011-06-17 14:14:05
对我来说'req.isXMLHttpRequest'返回undefined,使用express 3.x,任何猜测为什么? – 2013-02-23 07:48:49
您还可以使用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 }
});
});
};
'res.partial()'现在已被弃用并从Express 3.x中删除。他们建议使用块:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x – 2014-06-16 21:22:51
你说你想要的页面部分要像新的谷歌搜索页面,只有在飞行中加载部分页面? – jcolebrand 2011-05-15 05:49:32
是的,这是我想要的 – kulebyashik 2011-05-15 16:26:52
然后,你想要的不是真正的“表达”,而只是普通的老阿贾克斯。 – jcolebrand 2011-05-15 16:40:23