2011-11-18 15 views
5

हाय क्या मेरे सभी मार्गों पर कुछ वैश्विक ऐप डेटा उपलब्ध कराने के लिए हाय 'एक्सप्रेस' विशिष्ट तरीका है? या यह सिर्फ मॉड्यूल.एक्सपोर्ट स्टेटमेंट का उपयोग करने का मामला है?एक्सप्रेस - सभी मार्गों पर डेटा पास करना

कोई भी संकेतक स्वागत से अधिक है। नोड नोब - बीटीडब्ल्यू

उत्तर

11

आप एक वैश्विक वस्तु अपने लेआउट में भी उपलब्ध है कि सेट कर सकते हैं

app.js

app.configure(function(){ 
    app.set('view options', {pageTitle: ''}) 
} 

app.get('/',function(request, response){ 
    response.app.settings['view options'].pageTitle = 'Hello World' 
    response.render('home') 
}) 

layout.jade

!!! 
html 
    head 
    title= pageTitle 
    body!= body 
7

आप प्रत्येक ऐप के सेटअप हिस्से में app.set() का उपयोग अपने ऐप के सेटअप हिस्से में कर सकते हैं। ऐप ऑब्जेक्ट आपके मार्गों में req.app के माध्यम से उपलब्ध है।

व्यक्तिगत रूप से, मैं सेटअप में app.set('name', obj); करना चाहता हूं और मार्गों में मैं इसे req.app.settings.name के माध्यम से एक्सेस करता हूं।

+1

आपका मतलब res.app req.app नहीं है? – FireZenk

2

तुम भी एक इस्तेमाल कर सकते हैं सभी विचारों को डेटा पास करने के लिए गतिशील सहायक।

app.js

// Dynamic Helpers 
app.dynamicHelpers({ 
    appSettings: function(req, res){ 
     return {name:"My App", version:"0.1"}; 
    } 
}); 

अब अपने दृश्यों पर आप (मैं इस उदाहरण पर EJS इस्तेमाल किया, लेकिन यह जेड या किसी अन्य दृश्य इंजन के साथ काम करना चाहिए) इस तरह इसका इस्तेमाल कर सकते हैं:

view.ejs

<%= appSettings.name %> 
<%= appSettings.version %> 

आशा इस मदद करता है।

+3

आपके उत्तर का नकारात्मक पक्ष यह है कि प्रत्येक अनुरोध के लिए आप सहायक को संसाधित करेंगे। संस्करण जैसे स्थिर डेटा के लिए, 'app.set (' व्यू विकल्प ', कुछडेटा) बेहतर अनुकूल है। गतिशील डेटा गतिशील डेटा के लिए हैं। – jackdbernier

+0

अच्छा बिंदु! आपकी टिप्पणी के लिए बहुत बहुत धन्यवाद! – FMontano

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