如何在Express中的模板目录的根目录中包含/扩展jade文件?

时间:2012-10-15 23:40:35

标签: node.js express pug

给出样本结构:

/layout.jade
/really/deep/dir/inside/my/template/folder/example.jade

有没有办法在example.jade中扩展layout.jade而不必跟踪父目录的数量?

这可以按照预期的方式运作:

extends ../../../..etc../../../layout

但最好做一些事情:

extends /layout

甚至别名/硬链接并使用它:

extends layout

另外假设有人知道解决方案,它是否也可以应用于包含?

2 个答案:

答案 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;

我不妨警告你,这个测试不够用,不适合生产使用。