2013-08-05 14 views
5

Pracuję z Node.js i ekspresowe. Załóżmy, że mam parę plików JadeRenderowanie pojedynczego bloku w jaderze

template.jade

html 
    body 
    block page-content 

example.jade

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

Gdybym renderowanie example.jade, będę uzyskać wynik podłączając ten paragraf tag do tagu body szablonu .jade, który zwykle jest tym, co chciałbym.

Mój problem polega na tym, że próbuję użyć pushState i interfejsu History API do załadowania tych plików (no, oczywiście, nie są to pliki), a kiedy to robię, chcę otrzymać prośbę, która zwróci zawartość blok treści strony sam, bez reszty pełnego dokumentu html. Czy istnieje prosty sposób, aby powiedzieć Jade, żeby właśnie wyrenderował blok i nie osadził go w szablonie?


Najlepszym mogę wymyślić zmieniał to być:

example.jade

extends template 
    block page-content 
    import example-content 

PRZYKŁAD content.jade

p 
    | Lorem ipsum yadda yadda 

Ale wydawało hackish aby utworzyć dodatkowe pliki, takie jak to.

Odpowiedz

0

Jade obsługuje kod wykonywalny. W przypadku użycia przedrostka - (bez buforowania). Na przykład można użyć jeśli statment w głównym szablonie układ jade:

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

Render stronę html, takich jak:

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

Render blok HTML, takich jak:

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

A jeśli nie Zmienna we wszystkich wyrażeń renderowania, użyj renderType, użyj

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

i ustaw domyślną wartość dla wszystkich żądań. Gdzie init app dodać Handler:

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

app.use(logger); 
+0

Nie sądzę, istnieje jakikolwiek sposób, aby warunkowo zawierać „szablon” rozszerza linię; umieszczenie dwóch gigantycznych bloków wewnątrz pliku szablonu wydaje się być bolesne. – Retsam