2013-08-05 7 views
5

私はNode.jsを使って作業しています。私はヒスイのファイルのペアを持っていると仮定します。ヒスイのブロックをレンダリングする

template.jade

html 
    body 
    block page-content 

example.jade

extends template 
    block page-content 
     p 
      | Lorem ipsum yadda yadda 

私はexample.jadeをレンダリングする場合、私はその段落を接続した結果を得るでしょうタグをtemplate.jadeのbodyタグに追加します。これは通常は私が望むものです。

私の問題は、これらのファイルを読み込むためにpushStateとHistory APIを使用しようとしていることです(よく、obisously -these-ファイルではありません)、そうする際には、完全なhtmlドキュメントの残りの部分を使わずに、 Jadeにブロック自体をレンダリングし、テンプレートに埋め込まないようにする簡単な方法はありますか?


私が思い付くことができる最高のは、それがために変更された:

example.jade

extends template 
    block page-content 
    import example-content 

例-content.jade

p 
    | Lorem ipsum yadda yadda 

しかし、それはハック見えましたこのような余分なファイルを作成します。

答えて

0

実行可能コードをサポートします。接頭辞を使用すると - (バッファリングなし)。なステートメントたとえば、あなたは、メインのレイアウトヒスイテンプレートでを使用することができます。

- if (renderType && renderType == 'page') { 
    doctype 5 
    html 
     head 
     title= title 
     body 
- } 
     block content 

のようなHTMLページをレンダリングします

res.render('index', { title: 'StackOverflow', renderType: 'block' }); 

そして、あなたドンの場合:

res.render('index', { title: 'StackOverflow', renderType: 'page' }); 

のようなHTMLのブロックをレンダリングすべてのレンダー式でレンダリングタイプ変数を使用してください。

res.locals(obj) //*Assign several locals with the given obj. The following are equivalent:* 

すべての要求に対してデフォルト値を設定します。 init appハンドラを追加する場所:

var logger = function(req, res, next) 
{ 
    res.locals({renderType:'page'}); 
    next(); 
}; 

app.use(logger); 
+0

「拡張テンプレート」行を条件付きで含める方法はありません。私のテンプレートファイルの中に2つの巨大なifブロックを置くのは苦しいようです。 – Retsam

関連する問題