如果请求是通过 ajax 发出的,我只想从 page1.jade 发送 block 内容,如果它是正常的 GET,它应该用 layout.jade 中内置的这个 block 来回答
最佳答案
Jade 不支持conditional layout switch :
if type=='get'
extends layout
block content
p This is block content
无论变量名称如何,这都会使用布局呈现页面。
METHOD 1
一种简单的方法是在单独的文件中定义 block 内容并将其包含在您的 page1.jade 中,然后您可以独立访问该 block 。
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
includes/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/浏览器请求。
METHOD 2
另一种更干净的方法是修改您的 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' });
});
关于javascript - Node.js、Jade/Pug,如何提供全部和部分模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37391581/