2013-02-23 3 views
8

Ich benutze Jade (ohne Express, nur für statische HTML-Templating) - die ich als in der Lage, Teiltöne zu verstehen verstanden, Bedeutung Bereich ist kein Problem, aber dies scheint nicht zu sein Fall und ich kann keinen Hinweis auf diesen Anwendungsfall finden.Jade Templating, variabler Bereich in beinhaltet

master.jade

!!! 5 
html 
    block vars 
    - var slug= 'home' 
    head 
    block pagetitle 
     title Static HTML 
    link(rel='stylesheet', href='css/styles.css') 
    body(class= slug) 
    .wrapper 
     include includes/header 

includes/header.jade

.header 
    ul 
    li(class= slug) 

Ich habe versucht, Syntax-Varianten #{slug} einschließlich und erhalten immer den Fehler innerhalb der "Schnecke ist nicht definiert" includes/header.jade Datei - ist es möglich, dies zu tun?

EDIT: So wie die Antwort von Dave Weldon in den Kommentaren ist unten angegeben, dass die Variable verfügbar ist, wenn in master.jade aber mein Build-Befehl kompiliert alle Jade-Dateien einschließlich der umfasst auf ihren eigenen eingeschlossen, bei welcher Punkt die Variable ist natürlich nicht definiert.

Antwort

15

Man könnte dies erreichen mit einem mixin etwa so:

master.jade

include includes/header 

!!! 
html 
    block vars 
    - var slug= 'home' 
    head 
    block pagetitle 
     title Static HTML 
    link(rel='stylesheet', href='css/styles.css') 
    body(class= slug) 
    .wrapper 
     mixin header(slug) 

includes/header.jade

mixin header(klass) 
    .header 
    ul 
     li(class= klass) 

Wenn zusammengestellt:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Static HTML</title> 
    <link rel="stylesheet" href="css/styles.css"> 
    </head> 
    <body class="home"> 
    <div class="wrapper"> 
     <div class="header"> 
     <ul> 
      <li class="home"></li> 
     </ul> 
     </div> 
    </div> 
    </body> 
</html> 
+0

so Du sagst das Include wird der Gültigkeitsbereich dieser Variable nicht enthalten sein? Ich würde gerne eine Mischung mit dem Inhalt meiner tatsächlichen includes/header.jade Datei vermeiden - mein Beispiel wurde ziemlich vereinfacht! Aber wenn du sagst, dass ich die Variable nicht erben kann, denke ich, habe ich keine Wahl –

+0

tatsächlich funktioniert es einfach gut :) danke - definitiv mit Mixins mehr - nicht so schlimm wie ich dachte - danke nochmal –

+0

Ja, ich realisierte ich didn Beantworte deine Frage nicht. Ihr ursprünglicher Code funktioniert also gut, wenn Sie 'jade master.jade' einfach ausführen - Sie erhalten einen Fehler, wenn Sie' includes/header.jade' kompilieren. Persönlich bin ich ein großer Fan von Mixins und benutze sie so oft ich kann. Ich denke, es ist die überlegene Lösung, selbst in diesem Fall, da Sie angeben können, welche Argumente der Mixin haben kann, und Jade wird sich nicht beschweren, wenn Sie ihn bitten, das Include zu kompilieren. –