2012-10-24 15 views
6

मेरे structue शामिल करने के लिए है निम्नलिखित:जेड 3.x टेम्पलेट्स: ब्लॉक पासिंग

हाय एक "शीर्षक" नामक एक टेम्पलेट शीर्षक यह इस

div.span4 
    block headingleft 
div.span3 
    block headingright 

की तरह लग रहा है कि मैं क्या हासिल करने की कोशिश कर रहा हूँ बजाय .span4 और IamRig में "IamLeft" डालने की:, मेरे मुख्य पृष्ठ से मैं की तरह

div 
include heading 
    block headingleft 
      a IamLeft 
    block headingright 
      a IamRight 

लेकिन कोड के लिए व्यवहार है headingleft और सही शीर्षक, यानी कुछ के लिए ब्लॉक मूल्यों पास करना चाहते है एचटी इन। एसपी 3 में यह दोनों .span3 के तहत डाला जा रहा है जैसे कि यह सामान्य जेड संलग्न था

उत्तर

9

मैं इसे कुछ कोशिश करूँगा और कुछ जरूरी चीजों को समझाऊंगा क्योंकि आप शायद कुछ जेड तकनीकों को जोड़ रहे हैं और परिभाषा से भ्रमित हो गए हैं "ब्लॉक" का।

मैं तुम्हें दो उदाहरण (मामूली परिवर्तनों के साथ) अपने यूज-केस को लक्षित कर देंगे:

शामिल का उपयोग को शामिल तकनीक आप भी तरह से अपने मास्टर (लेआउट) टेम्पलेट के स्थानापन्न सामग्री अन्य टेम्पलेट फ़ाइलों की सामग्री। जब आप अन्य जेड टेम्पलेट फाइलों को शामिल करते हैं तो अतिरिक्त सामग्री को शामिल फ़ाइल में शामिल किया जा सकता है या किसी स्थान पर उपज किया जा सकता है।

main.jade:

div 
    include heading 
    div.span3 
     a IamSomewhatRight 

heading.jade:

div.span4 
    a IamLeft 
div.span3 
    a IamRight 

परिणाम:

div 
    div.span4 
    a IamLeft 
    div.span3 
    a IamRight 
    div.span3 
     a IamSomewhatRight 

जैसा कि आप देख, अतिरिक्त और वैकल्पिक सामग्री, यानी include heading से नीचे ब्लॉक, डिफ़ॉल्ट रूप से शामिल फ़ाइल की सामग्री में जोड़ा गया है। प्रतिस्थापन के लिए सही जगह को परिभाषित करने के लिए कीवर्ड yield का उपयोग करें। कृपया पर ध्यान दें कि ब्लॉक परिभाषाओं के साथ इसका कोई लेना-देना नहीं है जो नीचे वर्णित कीवर्ड block द्वारा परिभाषित किया गया है।

ब्लाकों

आप एक मास्टर टेम्पलेट के भीतर ब्लॉक परिभाषित हैं, तो आप ठोस उपयोग के लिए इस टेम्पलेट का विस्तार कर सकते हैं और इन ब्लॉकों से प्रतिस्थापित करने का वर्णन कैसे - कि अपने विरासत में मिला टेम्पलेट के भीतर किया जाता है:

main.jade:

div 
    block headingleft 
    block headingright 

शीर्षक नहीं। जेड:

extends main 

block headingleft 
    div.span4 
    a IamLeft 

block headingright 
    div.span3 
    a IamRight 
    div.span3 
    a IamSomewhatRight 

परिणाम "शामिल" उदाहरण में परिणाम के रूप में वास्तव में है।बेशक यह आपके heading.jade को कुछ myview.jade में बदलने और संपूर्ण पृष्ठ निर्माण को कवर करने के लिए यहां समझ सकता है।

अब, इसमें शामिल या ब्लॉक या दोनों का उपयोग करने के लिए अलग-अलग स्थितियां और आवश्यकताएं हैं जो आपके विचारों को लिखने के लिए विभिन्न तरीकों से संयुक्त हैं (और यह दर्शन का प्रकार है!)। विरासत का उपयोग करना - मेरी राय में - कई "मुख्य फाइलों" की पुनरावृत्ति को खत्म करने का एक अच्छा तरीका - या किसी प्रकार की नियंत्रक आधारित दृश्य रचना तकनीक जो प्लेसहोल्डर चर (या जो कुछ भी) को परिभाषित करती है जो अक्सर अव्यवस्थित कोड में परिणाम देती है जो " चिंताओं को अलग करना "दृष्टिकोण।

+0

हे स्पष्टीकरण के लिए धन्यवाद, मैं पहले से ही उसमें से अधिकांश को जानता था, लेकिन मैं ब्लॉकों का उपयोग करके कुछ हासिल करने की कोशिश कर रहा था (यानी एक विशिष्ट स्थान पर टेम्पलेट का पुन: उपयोग करना) + जिसमें वास्तव में उपज + शामिल होनी चाहिए। धन्यवाद। – user1583920

संबंधित मुद्दे