2012-02-22 17 views
6

जब आप आप 'view options', { layout: true } के साथ अपने आवेदन कॉन्फ़िगर कर सकते हैं और टेम्पलेट्स प्रदान की गई स्वचालित रूप से लेआउट टेम्पलेट के body स्थानीय में जोड़ा जाएगा एक्सप्रेस में jade टेम्पलेट्स प्रस्तुत करना।प्रतिपादन जेड टेम्पलेट

मैं बराबर व्यवहार Node.js से फाइल प्रतिपादन प्राप्त करने के लिए कोशिश कर रहा हूँ, लेकिन एक्सप्रेस रूपरेखा के बिना (मैं तो बस एक बड़ा पाइप लाइन के हिस्से के रूप स्टैटिक फ़ाइलें निर्माण कर रहा हूँ)। ,

  • लोड दोनों मुख्य टेम्पलेट और लेआउट कार्यों में बदलने का, पहला टेम्पलेट प्रस्तुत करना और फिर लेआउट समारोह
  • उपयोग मानक टेम्पलेट के लिए परिणाम पारित:

    दो विकल्प दिखाई देते हैं विरासत और ब्लॉक संरचना, लेकिन फिर मैं स्पष्ट रूप से नामित ब्लॉक का उपयोग कर रहा हूं

क्या ये एकमात्र विकल्प हैं (जो काफी उचित हैं, अभी भी भयानक हैं), या क्या मुझे कुछ चाल याद आ रही है?


संपादित

यहाँ मामला किसी में पहला विकल्प का एक मोटा कटौती रुचि रखता है है:

// Load jade 
var jade = require('jade'); 

// Load actual template text 
var layout = fs.readFileSync('layout-path', 'utf8') 
    tpl = fs.readFileSync('tpl-path', 'utf8'); 

// Compile template rendering function 
layout = jade.compile(layout, { pretty: true, filename: 'layout-path' }); 
tpl = jade.compile(tpl, { pretty: true, filename: 'tpl-path' }); 

// Render jade template, passing in the info 
var output = layout({ body: tpl({ local1: some_var, local2: some_var }) } 

// Write rendered content to file 
fs.writeFileSync('output.html', output); 
+1

मुझे लगता है कि नामित ब्लॉक के साथ टेम्पलेट विरासत के पक्ष में (के रूप में कम से कम, डिफ़ॉल्ट रूप से सक्षम), इसलिए हो सकता है यह अपने निर्णय में मदद कर सकते हैं एक्सप्रेस 3.0 लेआउट चला जाता है: http://groups.google.com/group/express -जेएस/ब्राउज_थ्रेड/थ्रेड/2ec558510be6d0a4 (और जब आप एक नई परियोजना शुरू करते हैं तो express.js द्वारा उत्पन्न स्टब भी देखें: https://github.com/visionmedia/express/blob/master/bin/express)। – mna

+0

@PuerkitoBio जानकारी के लिए धन्यवाद; बाहर निकलने लायक है, लेकिन मेरा असली सवाल यह है कि * क्या यह करने का एकमात्र तरीका है *? लोग हैं, जो चीजों के इन प्रकार के एक साथ रखा अक्सर सामान्य उपयोग के मामलों के लिए एक शॉर्ट सर्किट एम्बेड - मैं तो बस हमेशा बहुत चालाक नहीं उन्हें खोजने के लिए कर रहा हूँ! –

+0

@ एजे। स्निपेट के लिए धन्यवाद। –

उत्तर

3

मेरा मानना ​​है कि इस सवाल का जवाब "नहीं", आप किसी भी लापता नहीं कर रहे है छल। आपके द्वारा लिखे गए दो विकल्प मुझे आपकी फ़ाइल जेनरेट करने के लिए जेड का उपयोग करने के दो सबसे सरल तरीकों से प्रतीत होते हैं। बेशक वहाँ बहुत सारे गैर-जेड दृष्टिकोण भी हैं। उदाहरण के लिए, आप सामग्री plates दृष्टिकोण के साथ, अच्छे पुराने String.replace मर्ज कर सकते हैं, या अलग हैडर विज्ञापन पाद लेख टुकड़ा फ़ाइलों में अपने लेआउट विभाजित है और सिर्फ सिर, शरीर, पैर क्रम में उन्हें जोड़।

+0

कि के लिए धन्यवाद - और मैं Flatiron ढांचे के लिए लिंक और याद दिलाते हैं कि इन नए समस्याएं नहीं हैं, सराहना करते हैं। कभी-कभी बादलों में खुद को खोना आसान होता है :) –

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