2012-02-27 10 views
26

मेरी नोड/Express.js परियोजना में मैं विचारों के लिए सेट कर सकते हैं 'दृश्य' फ़ोल्डर देखने के लिए तो जैसे विश्व स्तर पर फ़ोल्डर:नोड/Express.js - ओवरराइड जहां प्रत्येक अनुरोध

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    .... snip .... 
}); 

... और मेरे सभी दृश्य टेम्पलेट्स दृश्य फ़ोल्डर में जाते हैं।

क्या अनुरोध के आधार पर एक्सप्रेस पर विचारों को देखने के लिए एक्सप्रेस कहां ओवरराइड करना संभव है? उदाहरण के लिए, कुछ निम्नलिखित की तरह:

app.get('/', function(req, res) { 
    res.render('index', { viewFolder: 'otherViews' }); 
}); 

कारण मैं पूछ रहा है जहां प्रत्येक क्षेत्र में यह अपने विचारों फ़ोल्डर है हो जाता है माइक्रोसॉफ्ट ASP.NET MVC के क्षेत्रों कार्यक्षमता को दोहराने के लिए कोशिश कर रहा हूँ है।

+0

हाय काम करता है आप कभी भी स्वीकार किए जाते हैं जवाब देने के लिए एक बेहतर समाधान मिला? जहां क्षेत्रों को दृश्य फ़ोल्डर का उप फ़ोल्डर नहीं होना चाहिए? –

उत्तर

22

के विचारों 'सेटिंग ताकि आप पदानुक्रम में एक उप-फ़ोल्डर निर्दिष्ट करने के लिए सक्षम होना चाहिए, रूट निर्देशिका है:

app.get('/', function(req, res) { 
    res.render('areaName/viewName'); 
}); 

यह अपने' क्षेत्रों 'उप फ़ोल्डरों होने की जरूरत का मतलब है लेकिन यह आपको उस अलगाव को पूरा करने की अनुमति देता है जिसे आप ढूंढ रहे हैं।

6

अधिक मॉड्यूलर समाधान के रूप में, मैंने sails.js में ऐसा कुछ किया। अपने मिडलवेयर में दिए गए अनुरोध के लिए रेंडर फ़ंक्शन को बस सवारी करें। :)

var curRender = res.render; 
res.render = function(path, locals, func) { 
    var args = [res.locals.explicitPath + '/' + path, locals, func]; 
    curRender.apply(this, args); 
}; 
0

पूर्ण पथ बहुत

app.get('/', function(req, res) { 
    res.render(path.join(__dirname, 'view.jade')); 
}); 
संबंधित मुद्दे