2014-04-09 10 views
12

में app.set और app.engine मैं Node.js tutorial का अनुसरण कर रहा हूं।एक्सप्रेस

दो लाइनें है जिसके लिए मैं यकीन नहीं कर रहे हैं:

app.set('view engine', 'html'); 
app.engine('html', hbs.__express); 

मैं app.set के लिए documentation की जाँच की और यह केवल मुझसे कहता है:

सौंपें मूल्य के लिए नाम की स्थापना।

लेकिन मेरा सवाल यह है कि इसका उपयोग करने की प्रासंगिकता क्या है। मैंने इसे गुगल किया और जहां भी app.engine का उपयोग किया जाता है app.set पहले कहा जाता है।

मुझे app.engine से पहले app.set का उपयोग करने का महत्व बताएं।

संपादित

मैं निम्नलिखित लाइन पाया, लेकिन मैं अब भी स्पष्ट नहीं के रूप में मैं टेम्पलेट इंजन बहुत पहले समय का उपयोग कर रहा हूँ:

लेकिन हम एक्सप्रेस बता द्वारा गतिशील रूप HTML फ़ाइलों के इलाज के लिए कर सकते हैं view engine निर्देश का उपयोग करके, आप ऊपर देखते हैं।

उत्तर

33

पहली पंक्ति, app.set एक्सप्रेस बताता है जो टेम्पलेट इंजन का उपयोग करने के लिए: इस मामले में, html में। इसके लिए आवश्यक है कि उस नाम के साथ एक टेम्पलेट इंजन स्थापित हो, और यह टेम्पलेट इंजन .html एक्सटेंशन वाली फ़ाइलों के लिए ज़िम्मेदार महसूस करता है।

आप उपयोग कर रहे हैं ejs, जैसे, इस एक लाइन के लिए पर्याप्त है (यद्यपि आप आमतौर पर app.set कि निर्देशिका जहां दृश्य फ़ाइलों के लिए देखने के लिए परिभाषित करता है के लिए एक दूसरी कॉल कर सकते हैं):

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

अब, चाहिए आप के लिए एक टेम्पलेट इंजन का उपयोग करना चाहते हैं फ़ाइल एक्सटेंशन, उदाहरण के लिए आप ejs इंजन को न केवल .ejs फ़ाइलों का ख्याल रखना चाहते हैं, बल्कि .html फ़ाइलों का भी ख्याल रखना चाहते हैं।

इस मामले में आप दूसरी पंक्ति, जो एक्सप्रेस कि विस्तार html के साथ फ़ाइलें आप उन्हें प्रस्तुत करना hbs.__express समारोह कॉल करना चाहते हैं के लिए कहता है उपयोग कर सकते हैं (जैसा कि वहाँ वास्तव में कोई टेम्पलेट इंजन html कहा जाता है)। इसका अनिवार्य रूप से मतलब है कि आप इंजन .html फ़ाइलों को प्रस्तुत करने के लिए चाहते हैं।

__express फ़ंक्शन एक्सप्रेस संगत होने के लिए नोड.जेएस के तहत टेम्पलेट इंजनों के लिए एक डी-फैक्टो मानक है: यही उनके प्रतिपादन समारोह को बुलाया जाना चाहिए ताकि एक्सप्रेस इसे आसानी से ढूंढ सके (यदि इसका कोई अलग नाम है, तो आप कर सकते हैं इसे भी कॉन्फ़िगर करें, लेकिन यह एक अलग कहानी है)।

उम्मीद है कि इससे मदद मिलती है।

+0

इस तरह के एक अच्छा स्पष्टीकरण के लिए धन्यवाद +1 – Trialcoder

+1

बहुत बहुत धन्यवाद :-)) –