我如何在express模板目录的根目录下包含/扩展一个jade文件?

给定一个示例结构:

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

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

这按预期工作:

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

但是最好做一些事情:

 extends /layout 

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

 extends layout 

另外假设有人知道一个解决scheme,它也可以应用于包括?

在这个特定的提交中引入了一个变化。

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

你必须先设置翡翠:

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

然后,从任何模板,不pipe嵌套多深,你都可以这样做:

 include /layout 

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

但是,一个简单的方法是修补jade / lib / parser.js,replace两个实例:

 , dir = dirname(this.filename); 

附:

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

我也可以警告你,这是没有足够的testing,不打算用于生产使用。