मेरी टीम के पास कोई अनुभवी जेएस डेवलपर नहीं है, लेकिन हम नोड में एक लाइब्रेरी लिख रहे हैं और एक वास्तविक जेएस डेवलपर से एक सुझाव मिला है कि "हमें जेएस को अधिक मॉड्यूलर बनाना चाहिए - वैश्विक नामस्थान को प्रदूषित नहीं करना और इसे बनाना नए आने वालों के लिए "अधिक पठनीय है, और हमें बताया करने के लिए निम्नलिखित:क्या आईआईएफई का उपयोग कर मॉड्यूल.एक्सपोर्ट को परिभाषित करने का कोई कारण है?
module.exports = (function(){
return {
nameToExpose: functionToExpose
...
};
})();
बल्कि
module.exports.nameToExpose = functionToExpose;
इस का फ़ायदा क्या है की तुलना में, यदि कोई हो? उत्तरार्द्ध कोई भी स्थानीय घोषणा नहीं करता है जिसे आईआईएफई द्वारा स्कॉप्ड किया जाएगा, और यहां तक कि अगर ऐसा होता है, तो वे मॉड्यूल फ़ाइल के लिए स्थानीय होंगे और पूरे कार्यक्रम के लिए वैश्विक नहीं होंगे जो require()
है।
कुछ इस साइट के बारे में कुछ गुगलिंग और पोकिंग इस विशेष प्रश्न पर कोई जवाब नहीं डालता है, हालांकि आईआईएफई के कई अन्य स्पष्टीकरण हैं जिन्हें मैंने पढ़ा है (और उपर्युक्त टिप्पणी में सारांशित हैं)। कुछ परीक्षण निश्चित रूप से बताते हैं कि उत्तरार्द्ध वास्तव में वैश्विक नामस्थान में functionToExpose
डालता है, हालांकि इसका मूल नाम फ़ंक्शन प्रकार में ही दर्ज किया गया है।
उसने आपको ब्राउज़र में जावास्क्रिप्ट कोड के लिए एक सलाह दी होगी। उस मामले में एक आईआईएफई वैश्विक नामस्थान प्रदूषण को रोकता है। – MinusFour
यही है कि मेरे साथियों ने सोचा, लेकिन सवाल में विशेष कोड विशेष रूप से नोड के साथ चलाने के उद्देश्य से एक आवेदन का हिस्सा था। कोई ब्राउज़र फ्रंट एंड नहीं है। –
एक और "असली जेएस डेवलपर" ढूंढें जो वास्तव में नोड को समझता है और क्या मॉड्यूल है और वैश्विक नामस्थान है। अगर यह अधिक पठनीय है तो मैं अपनी टोपी खाऊंगा। –