2012-10-15 4 views
6

エクスプレスで私のテンプレートディレクトリのルートからヒスイファイルを含める/拡張するにはどうしたらいいですか?サンプル構造を考えると

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

は、私は、親ディレクトリの数を追跡することなくexample.jadeでlayout.jadeを拡張することができます方法はありますか?

カントー意図したとおり、この作品

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

しかし、のような何かを行うことが好ましいであろう。それは好き

extends /layout 

あるいはエイリアス/ハードリンクをして使用します。

extends layout 

誰かが解決策を知っていると仮定すると、それを含めるために適用することもできますか?

+0

は、この同じ問題に遭遇しました。嫌な "../../ .."アプローチを使用して終了しましたが、私はこれがもっと楽しい方法でまだ処理されていないことに驚いています。 –

+1

@JoshPinter下の私の答えを参照してください –

答えて

1

this particular commitで導入された変更があります。

基本的に、includeステートメントの最初の文字がスラッシュで、basedirが定義されている場合は、そのパスのテンプレートが検索されます。

あなたは、最初のセットアップジェイドする必要があります。

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

、どんなにあなたが行うことができますどのように深くネストされた、任意のテンプレートから:

include /layout 
0

コード自体を見てから、誰かが単にテンプレートのルートに関連するヒスイファイルを参照できないことに気付きました。で

, dir = dirname(this.filename); 

はしかし、単純なアプローチは、2つのインスタンスを置き換えるヒスイ/ libに/ parser.jsにパッチを適用することである

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

私もこれではないことを警告かもしれません十分にテストされており、プロダクションでの使用は意図していません。