如果通过ajax发出请求,我想只发送page1.jade中的块内容,如果它是正常的GET,它应该用layout.jade中内置的块来回答
答案 0 :(得分:2)
Jade不支持conditional layout switch:
if type=='get'
extends layout
block content
p This is block content
这将呈现具有布局的页面,而不管变量名称。
方法1
一种简单的方法是在单独的文件中定义块内容并将其包含在page1.jade中,然后您可以独立访问该块。
<强> layout.jade 强>
html
head
title My Site - #{title}
block scripts
body
block content
block foot
<强> page1.jade 强>
extends layout
block content
include ./includes/block.jade
<强>包括/ block.jade 强>
p This is the block content
这将是处理路线文件中的请求的方法
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/block', function(req, res, next) {
res.render('includes/block', { title: 'Express' });
});
修改它以处理AJAX /浏览器请求。
方法2
其他 cleaner 方式是修改layout.jade本身的条件
<强> layout.jade 强>
if type=='get'
html
head
title My Site - #{title}
block scripts
body
block content
block foot
每次渲染同一页面时从路由器传递变量:
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express',type:'get' });
});
router.get('/block', function(req, res, next) {
res.render('index', { title: 'Block Express' });
});