6

给定一个样本结构:

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

有什么方法可以在 example.jade 中扩展 layout.jade 而不必跟踪父目录的数量?

这按预期工作:

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

但最好执行以下操作:

extends /layout

甚至是别名/硬链接,并像这样使用它:

extends layout

还假设有人知道一个解决方案,它也可以应用于包含吗?

4

2 回答 2

1

这个特定的提交中引入了一个更改。

基本上,如果在 include 语句中找到的第一个字符是正斜杠并且定义了 basedir,它将在该路径中查找模板。

您必须首先设置 Jade:

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.locals.basedir = app.get('views');

然后,从任何模板,无论嵌套多深,您都可以:

include /layout
于 2014-11-19T00:53:08.750 回答
0

在查看了代码本身之后,我意识到有人不能简单地引用与模板根相关的玉文件。

然而,一个简单的方法是修补jade/lib/parser.js 替换两个实例:

, dir = dirname(this.filename);

和:

, dir = path.indexOf('/') ? dirname(this.filename) : this.options.settings.views;

我不妨警告您,这没有经过足够的测试,并且不适合生产使用。

于 2012-10-16T00:17:40.713 回答