2012-05-15 10 views
10

mam ten plik JadeJak dołączyć plik CSS w jadeitu (bez powiązania go)

!!! 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 

Wyjście:

$ 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> 

Oczywiście, mogę po prostu połączyć CSS-pliku , ale ja nie chcę.

+0

Nie sądzę, że to możliwe, ale dlaczego nie proste rozwiązanie? – jsbeckr

+2

Domyślam się, że chcesz oddzielić CSS od HTML w plikach serwera, ale zapewnić styl w html, aby uniknąć dodatkowego żądania uzyskania CSS. To źle: dodajesz dodatkowe obliczenia (dołączenie pliku) do pliku, który nie byłby żądany za każdym razem, ponieważ byłby buforowany. –

Odpowiedz

12

nie testowałem go jeszcze (nie na moim dev komputera ATM), ale jest szansa, robi coś takiego może działać:

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

Przy okazji, znalazłem HTML2Jade konwerter online, ale nie Jade2HTML. Masz pomysł, gdzie go znaleźć?

+1

Sprawdziłem to i to działa. – Webthusiast

+0

Dziękuję, mam nadzieję, że user470370 oznaczy to jako odpowiedź;) –

+0

dziękuję, działa! Nie znam żadnego konwertera online. ale najpierw znalazłem przyczynę niepowodzenia: "Tagi, które akceptują tylko tekst, taki jak skrypt i styl, nie potrzebują wiodącej | postaci" (https: // github.com/visionmedia/jade) – user470370

-1

Możliwym rozwiązaniem byłoby:

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

a następnie przekazać CSS tekst zaproszenia res.render(...).

+0

Uważam, że jest bardzo bardzo brudny: łączysz funkcjonalność i dane do stylizacji ... –

+0

To jest ... to tylko rozwiązanie jego problemu, którego tak naprawdę nie dostaję. ;) – jsbeckr

+1

Zobacz mój komentarz na temat jego celu;) –

1

Przełęcz fs w danych i można

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

niezupełnie bezpieczna implementacja, ale niezły haker – CoolAJ86

0

W obecnej wersji Jade (0.35.0) byłoby wystarczy napisać tylkoinclude style.css.

Kompletny przykład (biorąc pod uwagę piszesz index.jade, który znajduje się w folderze views, podczas gdy twoi style są w assets folderze):

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

Uwaga nieobecność style tagu w szablonie, byłby wstawiany automatycznie przez jade (co za fajna funkcja!).

+0

Od 1.0.0 (przynajmniej), wydaje się, że to już nie ma znaczenia: jeśli nie podasz więcej szczegółów, css jest zawarty w dosłownym brzmieniu, a nie w tagu stylu. –

+0

musisz dołączyć znacznik stylu, nie zostanie on dodany automatycznie. – Nicekiwi

2

odpowiedź Arnaud pracował dla mnie, ale ja od znalazł to trochę czystsze:

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

(type="text/css") jest opcjonalne, też, w zależności od sytuacji.

8

Od jade docs:

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

Działa idealnie.

+0

Podczas gdy to działa, chcę dodać, że jest równy kodowi w pytaniu oryginalnym, różnica jest wersją (upłynęły 3 lata). – pzy

Powiązane problemy