javascript - Node.js-एक कन्स्ट्रक्टर के रूप में module.exports का उपयोग करें




commonjs (3)

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

यह बराबर होगा:

var square = function(width) {
  return {
    area: function() {
      return width * width;
    }
  };
}

square कॉल करते समय new कीवर्ड की आवश्यकता नहीं है। आप square से फ़ंक्शन इंस्टेंस को वापस नहीं लौट रहे हैं, आप अंत में एक नई ऑब्जेक्ट लौट रहे हैं। इसलिए, आप बस इस फ़ंक्शन को सीधे कॉल कर सकते हैं।

new चारों ओर अधिक जटिल तर्कों के लिए, इसे देखें: क्या जावास्क्रिप्ट का "नया" कीवर्ड हानिकारक माना जाता है?

Node.js मैनुअल के अनुसार:

यदि आप अपने मॉड्यूल के निर्यात की जड़ को एक फ़ंक्शन (जैसे कि कन्स्ट्रक्टर) के रूप में चाहते हैं या यदि आप एक समय में एक संपत्ति बनाने के बजाय एक असाइनमेंट में एक पूर्ण ऑब्जेक्ट निर्यात करना चाहते हैं, तो इसे निर्यात के बजाय मॉड्यूल.एक्सपोर्ट को असाइन करें। ।

दिया गया उदाहरण है:

// file: square.js
module.exports = function(width) {
  return {
    area: function() {
      return width * width;
    }
  };
}

और इस तरह इस्तेमाल किया:

var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());

मेरा प्रश्न: उदाहरण वस्तु के रूप में वर्ग का उपयोग क्यों नहीं करता है? क्या निम्नलिखित मान्य है और क्या यह उदाहरण "ऑब्जेक्ट ओरिएंटेड" उदाहरण बनाता है?

var Square = require('./square.js');
var mySquare = new Square(2);
console.log('The area of my square is ' + mySquare.area());

उदाहरण कोड है:

मुख्य में

square(width,function (data)
{
   console.log(data.squareVal);
});

निम्नलिखित का उपयोग कर काम कर सकते हैं

exports.square = function(width,callback)
{
     var aa = new Object();
     callback(aa.squareVal = width * width);    
}

मेरी राय में, कुछ node.js उदाहरण काफी विकसित हैं।

आप असली दुनिया में ऐसा कुछ और देखने की उम्मीद कर सकते हैं

// square.js
function Square(width) {

  if (!(this instanceof Square)) {
    return new Square(width);
  }

  this.width = width;
};

Square.prototype.area = function area() {
  return Math.pow(this.width, 2);
};

module.exports = Square;

प्रयोग

var Square = require("./square");

// you can use `new` keyword
var s = new Square(5);
s.area(); // 25

// or you can skip it!
var s2 = Square(10);
s2.area(); // 100

ईएस 6 लोगों के लिए

class Square {
  constructor(width) {
    this.width = width;
  }
  area() {
    return Math.pow(this.width, 2);
  }
}

export default Square;

ES6 में इसका उपयोग करना

import Square from "./square";
// ...

कक्षा का उपयोग करते समय, आपको इसे सक्रिय करने के लिए new कीवर्ड का उपयोग करना होगा । बाकी सब कुछ वही रहता है।





commonjs