2016-05-23 9 views
1

要求がAJAXを介して行われている場合、それは普通のことだと、私はpage1.jadeからのみブロックコンテンツを送信したいと思い、それはジェイドがconditional layout switchをサポートしていませんlayout.jadeNode.js、Jade/Pug、テンプレートの全部と一部を提供する方法は?

+0

http://stackoverflow.com/a/28540611/1643143 – avck

+0

@:毎回同じページをレンダリングしながら、あなたのルータから。私は単一のテンプレートファイルを使用する方法を探しています。 –

答えて

2

に組み込まれたこのブロックに答える必要がありますGET:

if type=='get' 
    extends layout 
block content 
    p This is block content 

これは、変数名に関係なくレイアウトでページをレンダリングします。

簡単な方法は、別のファイル内のブロックの内容を定義し、あなたのpage1.jadeに含めることであろうMETHOD 1

、あなたは独立して、そのブロックにアクセスすることができます。

layout.jade

html 
head 
title My Site - #{title} 
block scripts 
body 
    block content 
    block foot 

page1.jade

extends layout 

block content 
    include ./includes/block.jade 

は、/ block.jade

p This is the block content 

このWOUをあなたのルートファイルのリクエストを処理する方法です。

router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 
router.get('/block', function(req, res, next) { 
    res.render('includes/block', { title: 'Express' }); 
}); 

これを修正して、AJAX /ブラウザリクエストを処理します。

METHOD 2

クリーナー方法は、条件付き

layout.jade

if type=='get' 
    html 
    head 
    title My Site - #{title} 
    block scripts 
body 
    block content 
    block foot 

そして合格のためのあなたのlayout.jade自体を変更することになります変数それはポイントではありませんavck33

router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express',type:'get' }); 
}); 
router.get('/block', function(req, res, next) { 
    res.render('index', { title: 'Block Express' }); 
}); 
関連する問題