मुझे एक ही समस्या थी, लेकिन फिर याद किया कि यह सब "सिर्फ जावास्क्रिप्ट" है और एक जवाब को हल करने में सक्षम था।
यदि आप चाहते हैं अपने मार्गों तुम सिर्फ निर्माण कर सकते हैं मार्गों एक hackish तरह से वस्तु (इस प्रकार) (बजाय उन सब को एक मार्गों/index.js फ़ाइल में cramming की) एक से अधिक फ़ाइलों में परिभाषित किया गया है करने के लिए:
var express = require('express')
, routes = {
index: require('./routes').index
, events: require('./routes/events.js').events
}
, hbs = require('hbs');
नोट: आप को एक्सप्रेस और एचबीएस परिभाषाओं (पहली और आखिरी पंक्तियों) की आवश्यकता नहीं है, मैंने इसे थोड़ा संदर्भ देने के लिए वहां रखा है। यह कोड स्निपेट सीधे मेरी app.js फ़ाइल के शीर्ष से आया था।
.index
और .events
पर ध्यान दें require()
फ़ंक्शन कॉल पर जंजीर। यही कुंजी है। मेरे events.js फ़ाइल केवल एक ही निर्यात (घटनाओं) है:
exports.events = function(req, res){
console.log('in events');
res.render('events', { events: events, title: "EVENTS" });
console.log('events done');
};
require()
समारोह अनिवार्य रूप से एक फ़ाइल पकड़ लेता है और (आयात) किसी भी गैर-निजी वार्स (जो है, विशेष exports
वस्तु से जुड़ी उन) की आवश्यकता है के बाद से और require()
कॉल वाली फ़ाइल में उन्हें उजागर करता है, मैं उस फ़ाइल से आवश्यक विशिष्ट फ़ंक्शन को पकड़ने में सक्षम हूं जिसमें मैं require()
कॉल के साथ शामिल हूं।मैं कई निर्यात के लिए आवश्यक फाइल में परिभाषित किया था, तो मैं कल्पना तो की तरह (परीक्षण नहीं किया) मैं उन्हें हड़पने सकता है:
routes = {
index: require('./routes').index
, events: require('./routes/events.js').events
, favorites: require('./routes/events.js').favorites
, upcoming: require('./routes/events.js').upcoming
}
मुझे लगता है कि इस NodeJS या MVC का एक समूह के साथ किसी देना होगा धमनीविस्फार अगर अनुभव वे आपका कोड पढ़ते हैं (मैं शर्त लगा रहा हूं कि इसमें एक ही फाइल 3 बार शामिल होगी, लेकिन मुझे सच में यकीन नहीं है)। शायद बेहतर करने के लिए:
routes = {
index: require('./routes').index
, events: require('./routes/events.js').events
, favorites: require('./routes/favorites.js').favorites
, upcoming: require('./routes/upcoming.js').upcoming
}
अन्यथा, उन्हें केवल इंडेक्स में क्यों नहीं फेंक दें? वास्तव में सुनिश्चित नहीं हैं, हालांकि, यह केवल मेरी दूसरी नोड और इससे संबंधित तकनीकों में से किसी के साथ काम करने का दिन है ...
इसके अलावा शायद आपकी मदद करेगा अगर आप अपने वर घोषणाओं के बाद एक console.log बयान फेंक:
console.log(routes);
+1 "लेकिन फिर याद किया कि यह सब" सिर्फ जावास्क्रिप्ट "है और एक जवाब को हल करने में सक्षम था।" !! शानदार जवाब :) –
"पहली बार लोड होने के बाद मॉड्यूल कैश किए जाते हैं" http://nodejs.org/api/modules.html#modules_caching –