2013-08-05 14 views
5

Sto lavorando con Node.js ed express. Supponiamo che io sono un paio di file di giada:Render blocco singolo in giada

template.jade

html 
    body 
    block page-content 

example.jade

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

Se rendo example.jade, vado a prendere il risultato di collegare tale paragrafo tag nel tag body di template.jade, che è normalmente quello che mi piacerebbe.

Il mio problema è che sto cercando di utilizzare pushState e l'API History per caricare questi file (beh, ovviamente non -questi- file), e quando lo faccio voglio una richiesta che restituisca il contenuto del blocco del contenuto della pagina stessa, senza il resto del documento html completo. C'è un modo semplice per dire a Jade di eseguire il rendering del blocco stesso e non inserirlo nel modello?


il meglio che potevo venire con stava cambiando di essere:

example.jade

extends template 
    block page-content 
    import example-content 

esempio-content.jade

p 
    | Lorem ipsum yadda yadda 

Ma sembrava hackish per creare file extra come questo.

risposta

0

Jade supporta il codice eseguibile. Se usato con prefisso - (senza buffering). Ad esempio è possibile utilizzare se statment nel principale modello di layout di giada:

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

Render pagina html come:

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

Render blocco HTML come:

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

E se don È possibile utilizzare la variabile renderType in tutte le espressioni di rendering, utilizzare

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

e impostare il valore predefinito per tutte le richieste. Dove init App Aggiungi gestore:

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

app.use(logger); 
+0

Non credo che ci sia alcun modo per includere condizionale della linea "modello si estende"; mettere due giganteschi se blocchi all'interno del mio file di modello sembra doloroso. – Retsam