2012-01-16 6 views
6

मैं express.js के साथ काम करने के लिए प्लेट टेम्पलेट इंजन प्राप्त करने का प्रयास कर रहा हूं। मेरे प्रारंभिक प्रयास किया गया था इस:Express.js कस्टम टेम्पलेट इंजन (प्लेट)

app.register('.html', { 
    compile: function (str, options) { 
     var template = new plate.Template(str); 
     return function(locals) { 
      return template.render(locals, function(err, data) { 
       return data; 
      }); 
     } 
    } 
}); 

मैं देख रहा हूँ समस्या यह है कि template.render कुछ भी (अपरिभाषित) वापस नहीं करता है कि लेकिन एक कॉलबैक करने के लिए डेटा गुजरता है। मुझे यकीन नहीं है कि इस मामले में इसे कैसे काम करना है क्योंकि एक्सप्रेस को संकलन फ़ंक्शन को उस फ़ंक्शन को वापस करने की अपेक्षा की जाती है जो कॉल किए जाने पर सीधे प्रस्तुत किए गए टेम्पलेट को लौटाता है।

मैं सोच रहा था कि शायद मैं इस मुद्दे को हल करने के लिए वादे का उपयोग कर सकता हूं लेकिन वहां कोई सफलता नहीं थी क्योंकि एक्सप्रेस कोड को वापस आने का वादा करने की उम्मीद नहीं है। मैं वादों पर तेज़ी से नहीं बढ़ रहा हूं इसलिए मैं इसे गलत कर सकता हूं:

app.register('.html', { 
    compile: function (str, options) { 
     var promise = new Promise(); 
     var template = new plate.Template(str); 
     return function(locals) { 
      template.render(locals, function(err, data) { 
       promise.resolve(data); 
      }); 
      return promise; 
     } 
    } 
}); 

यहां एक कस्टम कार्यान्वयन का एक उदाहरण है जो काम करता है।

app.register('.html', { 
    compile: function (str, options) { 
     var template = _.template(str); 
     return function (locals) { 
      return template(locals); 
     }; 
    } 
}); 

मैं वास्तव में के बाद से {% ब्लॉक%} टैग इतना भयानक है प्लेट टेम्पलेट का उपयोग करना चाहते हैं: अंतर टेम्पलेट टेम्पलेट() फ़ंक्शन सीधे तो की तरह बनाए स्ट्रिंग रिटर्न को रेखांकित किया गया है। किसी भी मदद की सराहना की है।

उचित प्रलेखन:

plate's github docs

express.js app.register docs

+0

प्लेट के निर्माता ने तुरंत यह पूछने के बाद एक्सप्रेस के साथ संगत बनाने के लिए परियोजना में एक पैच जोड़ा। [email protected]+ में परिवर्तन है और आप कार्यान्वयन विवरण देख सकते हैं [यहां] (https://github.com/chrisdickinson/plate/wiki/Getting-Started---In-Node) – joshontheweb

+1

आपको एक जवाब जोड़ना चाहिए यह सवाल और फिर यह सच है अगर यह सच है! – tjarratt

उत्तर

5

थाली के निर्माता तुरंत एक पैच परियोजना के लिए यह एक्सप्रेस साथ संगत बनाने के बाद मैं इस पूछा गयी। [email protected]+ में परिवर्तन है और आप कार्यान्वयन विवरण देख सकते हैं here