कॉमनजेएस मॉड्यूल निर्यात की गई संपत्तियों को परिभाषित करने के दो तरीके देते हैं। किसी भी स्थिति में आप एक ऑब्जेक्ट / फ़ंक्शन लौटा रहे हैं। क्योंकि फ़ंक्शंस जावास्क्रिप्ट में प्रथम श्रेणी के नागरिक हैं, वे ऑब्जेक्ट्स की तरह कार्य कर सकते हैं (तकनीकी रूप से वे ऑब्जेक्ट हैं)। उस new
कीवर्ड के उपयोग के बारे में आपके प्रश्न का एक सरल उत्तर है: हाँ। मैं समझाता हूँ ...
मॉड्यूल निर्यात करता है
आप या तो exports
गुणों को संलग्न करने के लिए प्रदान किए गए चर का उपयोग कर सकते हैं। एक बार एक अन्य मॉड्यूल में आवश्यकता होती है जो गुण प्रदान करते हैं उपलब्ध हो जाते हैं। या आप मॉड्यूल.exports गुण के लिए कोई ऑब्जेक्ट असाइन कर सकते हैं। या तो मामले में क्या लौटाया जाता require()
है, के मूल्य का संदर्भ है module.exports
।
मॉड्यूल कैसे परिभाषित किया जाता है, इसका छद्म कोड उदाहरण:
var theModule = {
exports: {}
};
(function(module, exports, require) {
// Your module code goes here
})(theModule, theModule.exports, theRequireFunction);
ऊपर के उदाहरण में module.exports
और exports
एक ही वस्तु हैं। ठंडा हिस्सा यह है कि आप अपने कॉमनजेएस मॉड्यूल में से किसी को भी नहीं देखते हैं क्योंकि पूरी प्रणाली इस बात का ध्यान रखती है कि आप सभी के लिए यह जानना आवश्यक है कि निर्यात संपत्ति और निर्यात चर के साथ एक मॉड्यूल ऑब्जेक्ट है जो पॉइंट को इंगित करता है एक ही बात मॉड्यूल। निर्यात करता है।
कंस्ट्रक्टर के साथ की आवश्यकता है
चूंकि आप किसी फ़ंक्शन को सीधे संलग्न कर सकते हैं, module.exports
आप अनिवार्य रूप से एक फ़ंक्शन वापस कर सकते हैं और किसी भी फ़ंक्शन की तरह इसे एक कंस्ट्रक्टर के रूप में प्रबंधित किया जा सकता है (यह इटैलिक्स में है क्योंकि एक फ़ंक्शन और जावास्क्रिप्ट के बीच एकमात्र अंतर यह है कि आप इसका उपयोग कैसे करना चाहते हैं। इसमें कोई फर्क नही है।)
तो निम्नलिखित पूरी तरह से अच्छा कोड है और मैं व्यक्तिगत रूप से इसे प्रोत्साहित करता हूं:
// My module
function MyObject(bar) {
this.bar = bar;
}
MyObject.prototype.foo = function foo() {
console.log(this.bar);
};
module.exports = MyObject;
// In another module:
var MyObjectOrSomeCleverName = require("./my_object.js");
var my_obj_instance = new MyObjectOrSomeCleverName("foobar");
my_obj_instance.foo(); // => "foobar"
गैर-निर्माणकर्ताओं के लिए आवश्यकता
समान कार्य गैर-निर्माता के लिए जाता है जैसे कार्य:
// My Module
exports.someFunction = function someFunction(msg) {
console.log(msg);
}
// In another module
var MyModule = require("./my_module.js");
MyModule.someFunction("foobar"); // => "foobar"
square
करने के लिए अब मौजूद नहीं है।Square
new square()