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が定義されている場合、そのパスでテンプレートが検索されます。

最初にジェイドを設定する必要があります。

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ファイルを単純に参照することはできないことに気付きました。

ただし、簡単なアプローチは、jade / lib / parser.jsにパッチを適用して、次の2つのインスタンスを置き換えることです。

, dir = dirname(this.filename);

と:

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

これは十分にテストされておらず、実稼働での使用を目的としていないことを警告することもできます。

于 2012-10-16T00:17:40.713 に答える