我如何在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,不打算用于生产使用。