2012-07-31 29 views
5

पूर्व बनाम: मैं NodeJS modules vs classes पढ़ा है, लेकिन यह अधिक विशिष्ट है।NodeJS: नोड मॉड्यूल सिंगलटन कक्षाएं

नोड में कुछ रिफैक्टरिंग के हिस्से के रूप में मेरे पास कुछ आवेदन सेवाएं हैं (डीडीडी-शब्दावली में) जिन्हें तकनीकी रूप से नोड मॉड्यूल के रूप में लागू किया जाता है।

चूंकि (डीडीडी-दुनिया में, शायद उस मामले के लिए कोई अन्य) आवेदन सेवाएं सिंगलेट्स होनी चाहिए और चूंकि नोड मॉड्यूल को केवल 'आवृत्ति' होने की गारंटी है, ऐसा लगता है कि यह ठीक है (मॉड्यूल छोटे पैमाने पर 'सिंगलटननेस' लागू करते हैं)

क्या कोई कारण है कि मुझे इन अनुप्रयोग सेवाओं को उचित सिंगलटन कक्षाओं के रूप में पुन: सक्रिय करने पर विचार करना चाहिए (जहां तक ​​'सिंगलटननेस' को जावास्क्रिप्ट में भी गारे लगाया जा सकता है), शुद्धवादी दृष्टिकोण के अलावा?

उत्तर

6

मामलों में जहां मॉड्यूल की 'singletoness' नीचे टूट जाएगा के लिए बाहर Node's module caching caveats चेक।

आप हमेशा फ़ाइल पथ (./, ../, या / से शुरू) एक एकल पैकेज आप सुरक्षित हैं के भीतर के साथ अपने सिंगलटन मॉड्यूल संदर्भ हैं।

यदि आपकी सेवा पैकेज में लपेटा जाता है अन्य मॉड्यूल द्वारा प्रयोग की जाने, आप अपने सिंगलटन के कई उदाहरण के साथ हो सकता है।

हम इस मिठाई सेवा पुस्तकालय प्रकाशित कहते हैं:

service-lib/ 
⌞ package.json 
⌞ service.js 

service.js: 
    var singleton = {}; 
    module.exports = singleton; 

इस ऐप्स में, server.js और other.js हमारी सेवा की अलग उदाहरणों मिल जाएगा:

app/ 
⌞ server.js 
⌞ node_modules/ 
    ⌞ service-lib/ 
    ⌞ service.js 
    ⌞ other-package/ 
    ⌞ other.js 
    ⌞ node_modules/ 
     ⌞ service-lib/ 
     ⌞ service.js 

जबकि इस एप्लिकेशन को होगा शेयर एक उदाहरण:

app/ 
⌞ server.js 
⌞ node_modules/ 
    ⌞ service-lib/ 
     ⌞ service.js 
    ⌞ other-package/ 
     ⌞ other.js 

ही npm install ही app ing निर्भरता के संस्करण के आधार पर या तो निर्देशिका संरचना हो सकती थी। नोड के folders doc विवरण है।

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