2012-05-15 13 views
10

ho questo file giada:Come includere un file CSS in giada (senza collegarlo)

!!! 5 
html 
    head 
    title test include 
    style(type='text/css') 
     //- DOES NOT WORK! 
     include test.css 
    body 
    //- works 
    include test.css 
    div 
     //- works 
     include test.css 

L'output:

$ jade -P test.jade 
rendered test.html 
$ cat test.html 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>test include</title> 
    <style type="text/css"> 
     //- DOES NOT WORK! 
     include test.css 
    </style> 
    </head> 
    <body>body { color: peachpuff; } 

    <div> body { color: peachpuff; } 

    </div> 
    </body> 
</html> 

Naturalmente, si potrebbe semplicemente collegare il css file , ma io non voglio.

+0

Non penso sia possibile, ma perché non la soluzione semplice? – jsbeckr

+2

Immagino che vogliate separare CSS da HTML nei file server, ma fornire lo stile in html per evitare ulteriori richieste di ottenere il CSS. Questo è sbagliato: si aggiunge ulteriore elaborazione (inclusione di file) per un file che non verrebbe richiesto ogni volta perché sarebbe stato memorizzato nella cache. –

risposta

12

Non ho prove ancora (non sul mio computer di dev ATM), ma c'è una possibilità di fare qualcosa di simile potrebbe funzionare:

!!! 
head 
    title test include 
    | <style type='text/css'> 
    include test.css 
    | </style> 

A proposito, ho trovato il convertitore online HTML2Jade ma non il Jade2HTML. Qualche idea su dove trovarlo?

+1

L'ho controllato, e funziona. – Webthusiast

+0

Grazie, spero che user470370 lo segnerà come risposta;) –

+0

grazie, funziona! non conosco nessun convertitore online. ma ho trovato il motivo per non riuscire prima: "I tag che accettano solo testo come script e stile non hanno bisogno del carattere | principale" (https: // github.com/visionmedia/jade) – user470370

-1

Una possibile soluzione potrebbe essere:

style(type="text/css") 
    #{css} 

E poi passare il css-text nella chiamata res.render(...).

+0

Lo trovo molto sporco: si collegano funzionali e dati allo stile ... –

+0

È .. è solo una soluzione per il suo problema, che non riesco proprio a ottenere. ;) – jsbeckr

+1

Vedere il mio commento sul suo obiettivo;) –

1

Passo fs in forma di dati e si può

style !{fs.readFileSync("index.css").toString()} 
+0

non esattamente sicuro per l'implementazione incrociata, ma comunque un buon compromesso – CoolAJ86

0

Nella versione corrente di Jade (0.35.0) sarebbe sufficiente scrivere soloinclude style.css.

Esempio completo (considerando che si sta scrivendo index.jade, che si trova nella cartella di views, mentre gli stili sono nella cartella assets):

!!! 
html 
    head 
     include ../assets/bootstrap3/css/bootstrap-theme.css 
     include ../assets/bootstrap3/css/bootstrap.css 
body 
    h1 Hi! 

Si prega di notare l'assenza di style tag nel modello, sarebbe inserito automaticamente da giada (che bella caratteristica!).

+0

A partire da 1.0.0 (almeno), questo sembra non essere più il caso: se non si specifica qualche altro dettaglio il css è appena incluso verbatim, non in un tag di stile –

+0

devi includere un tag di stile, non verrà aggiunto automaticamente. – Nicekiwi

2

risposta di Arnaud ha funzionato per me, ma ho dato pensano che questa è un po 'più pulito:

doctype 
head 
    title test include 
    style(type="text/css"): include test.css 

Il (type="text/css") è opzionale, anche, a seconda della situazione.

8

Da jade docs:

doctype html 
html 
    head 
    style 
     include style.css 
    body 
    h1 My Site 
    p Welcome to my super lame site. 

funziona perfettamente.

+0

Mentre funziona, voglio aggiungere che è uguale al codice nella domanda originale, la differenza è la versione (3 anni trascorsi). – pzy

Problemi correlati