Шаблоны Jade, переменная область действия включает в себя

Я использую Jade (без Express, только для статического HTML-шаблонирования) - который я понял как способный создавать частичные значения, то есть область действия не является проблемой, но это не так, и я не могу найти ссылку на это использование -дело.

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

включает /header.jade

.header 
  ul
    li(class= slug)

Я пробовал варианты синтаксиса, включая #{slug} и всегда получаю ошибку "пуля не определена" в пределах includes/header.jade файл - возможно ли это сделать?

РЕДАКТИРОВАТЬ: Таким образом, ответ, который дал Дейв Уэлдон в комментариях ниже, заключается в том, что переменная доступна, когда включена в master.jade, но моя команда сборки сама скомпилировала все файлы Jade, включая файлы включений, и в этот момент переменная, конечно, определены.

1 ответ

Решение

Вы можете сделать это с помощью миксина, например, так:

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)

включает /header.jade

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

Когда скомпилировано:

<!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>
Другие вопросы по тегам