我想让我的 Jade 页面根据条件扩展不同的布局。所以我的代码如下所示:
if myConditionVariable
extends layout1
else
extends layout2
block content
p here goes my content!
现在这不起作用。无论条件如何,似乎都只会尊重最后定义的扩展。我也试过动态定义模板名,比如
extends myLayoutNameVariable
并以不同的方式设置 myLayoutNameVariable(表达动态辅助函数,将其设置为 var、local var 等...)
对于条件布局还有其他解决方案吗,或者有人可以告诉我我做错了什么吗?
干杯,西蒙
最佳答案
因此,处理此问题的一种稍微不那么侵入性的方法是更改布局本身。
我加了一点中间件,剩下的就顺其自然了..
app.use(function(req, res, next){
res.locals.isAjax = req.headers['x-requested-with'] &&
req.headers['x-requested-with'] === 'XMLHttpRequest';
next();
});
既然设置好了,“isAjax”就可以用于jade了。
在我的“layout.jade”(您将从 扩展的模板)中,我这样做:
- if(!isAjax)
doctype 5
html
head
body
block content
block scripts
- else
block content
block scripts
为了(希望)清晰起见,我已经删除了完整 layout.jade 的其他元素。
最后,我扩展 layout.jade 的普通 View 无需修改即可工作(此 Jade 模板包括这两种情况)。
extends layout.jade
.container.
This is text will be wrapped for a non-ajax request,
but not for an ajax request.
关于node.js - nodejs Jade 条件扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041168/