给出样本结构:
/layout.jade
/really/deep/dir/inside/my/template/folder/example.jade
有没有办法在example.jade中扩展layout.jade而不必跟踪父目录的数量?
这可以按照预期的方式运作:
extends ../../../..etc../../../layout
但最好做一些事情:
extends /layout
甚至别名/硬链接并使用它:
extends layout
另外假设有人知道解决方案,它是否也可以应用于包含?
答案 0 :(得分:1)
this particular commit中引入了一项更改。
基本上,如果在include语句中找到的第一个字符是正斜杠并且定义了basedir,它将在该路径中查找模板。
首先必须设置Jade:
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.locals.basedir = app.get('views');
然后,从任何模板,无论嵌套有多深,都可以:
include /layout
答案 1 :(得分:0)
在看了代码本身之后,我意识到有人不能简单地引用与模板根相关的玉文件。
然而,一个简单的方法是修补jade / lib / parser.js替换两个实例:
, dir = dirname(this.filename);
使用:
, dir = path.indexOf('/') ? dirname(this.filename) : this.options.settings.views;
我不妨警告你,这个测试不够用,不适合生产使用。