2013-02-23 38 views
8

Tôi đang sử dụng Jade (không Express, chỉ cho HTML tĩnh templating) - mà tôi hiểu là có thể tạo partials, có nghĩa là phạm vi không phải là một vấn đề, nhưng điều này dường như không phải là trường hợp và tôi không thể tìm thấy tham chiếu đến trường hợp sử dụng này.Ngọc templating, phạm vi biến bao gồm

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) 
cú pháp

Tôi đã cố gắng biến thể bao gồm #{slug} và luôn nhận được lỗi "sên không được định nghĩa" bên trong includes/header.jade tệp - có thể thực hiện việc này không?

EDIT: Vì vậy, câu trả lời như được đưa ra bởi Dave Weldon trong các ý kiến ​​dưới đây là các biến có sẵn khi có trong master.jade nhưng build lệnh của tôi biên soạn tất cả file ngọc trong đó có bao gồm một mình, tại mà điểm biến là tất nhiên không được xác định.

Trả lời

15

Bạn có thể thực hiện điều này với một mixin như vậy:

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) 

Khi biên soạn:

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

nên bạn đang nói bao gồm sẽ không có phạm vi trên biến đó? Tôi muốn tránh một mixin cho nội dung của tập tin include/header.jade thực tế của tôi - ví dụ của tôi khá đơn giản! Nhưng nếu bạn đang nói rằng tôi không thể kế thừa các biến như thế này tôi đoán tôi không có sự lựa chọn –

+0

thực sự nó hoạt động tốt :) cảm ơn - chắc chắn sử dụng mixin nhiều hơn - không phải là xấu như tôi nghĩ - cảm ơn một lần nữa –

+0

Vâng tôi nhận ra tôi didn 't thực sự trả lời câu hỏi của bạn. Vì vậy, mã ban đầu của bạn hoạt động tốt nếu bạn chỉ cần chạy 'jade master.jade' - bạn sẽ gặp lỗi nếu bạn biên dịch' include/header.jade'. Cá nhân tôi là một fan hâm mộ lớn của mixins và sử dụng chúng nhiều nhất có thể. Tôi nghĩ rằng đó là giải pháp vượt trội ngay cả trong trường hợp này vì bạn có thể chỉ định các đối số mà mixin có thể thực hiện, và ngọc bích sẽ không phàn nàn nếu bạn yêu cầu nó biên dịch bao gồm. –

Các vấn đề liên quan