নোড.জেএস মডিউল.এক্সপোর্টগুলির উদ্দেশ্য কী এবং আপনি কীভাবে এটি ব্যবহার করবেন?


1432

নোড.জেএস মডিউল.এক্সপোর্টগুলির উদ্দেশ্য কী এবং আপনি কীভাবে এটি ব্যবহার করবেন?

আমি এ সম্পর্কিত কোনও তথ্য খুঁজে পাচ্ছি বলে মনে হচ্ছে না, তবে এটি প্রায়শই উত্স কোডে দেখায় এটি নোড.জেজের একটি বরং গুরুত্বপূর্ণ অংশ বলে মনে হচ্ছে code

নোড.জেএস ডকুমেন্টেশন অনুসারে :

মডিউল

বর্তমানের একটি রেফারেন্স module। বিশেষত module.exports রফতানির অবজেক্টের মতোই। দেখুন src/node.jsআরও তথ্যের জন্য।

তবে এটি আসলে সহায়তা করে না।

ঠিক কী করে module.exportsএবং এর একটি সহজ উদাহরণ কী হবে?

উত্তর:


1590

module.exportsrequireকলটি ফলাফল হিসাবে বাস্তবে ফিরে আসা বস্তু ।

exportsপরিবর্তনশীল প্রাথমিকভাবে যে একই বস্তুর সেট করা থাকে, (অর্থাত এটি একটি সাধারণভাবে সংক্ষেপে "ALIAS" থাকবে) মডিউল কোডে যাতে আপনি would সাধারণত লেখার কিছু ভালো:

let myFunc1 = function() { ... };
let myFunc2 = function() { ... };
exports.myFunc1 = myFunc1;
exports.myFunc2 = myFunc2;

অভ্যন্তরীণভাবে স্কোপ করা ফাংশন myFunc1এবং myFunc2

এবং কলিং কোডে আপনি ব্যবহার করবেন:

const m = require('./mymodule');
m.myFunc1();

যেখানে সর্বশেষ লাইনটি দেখায় যে কীভাবে ফলাফল requireহয় (সাধারণত) কেবল একটি সরল বস্তু যার বৈশিষ্ট্য অ্যাক্সেস করা যেতে পারে।

নোট: আপনি যদি ওভাররাইট করে থাকেন exportsতবে এটি আর উল্লেখ করা হবে না module.exports। সুতরাং আপনি যদি কোনও নতুন অবজেক্ট (বা কোনও ফাংশন রেফারেন্স) exportsবরাদ্দ করতে চান তবে আপনাকে সেই নতুন অবজেক্টটিও অর্পণ করতে হবেmodule.exports


এটি লক্ষণীয় যে exportsঅবজেক্টে যুক্ত হওয়া নামটি আপনি যে মূল্যটি যুক্ত করছেন তার জন্য মডিউলের অভ্যন্তরীণভাবে স্কোপ করা নামের মতো হওয়া উচিত নয়, তাই আপনার এটি থাকতে পারে:

let myVeryLongInternalName = function() { ... };
exports.shortName = myVeryLongInternalName;
// add other objects, functions, as required

অনুসরণ করেছে:

const m = require('./mymodule');
m.shortName(); // invokes module.myVeryLongInternalName

119
উত্তম উত্তর - এটি আমার কাছে মনে হয় '
এক্সপোজ

2
@ অ্যাপোফেনিয়া ওভারলোড - একটি ফাইল থেকে একাধিক উন্মুক্ত পদ্ধতিতে আপনি "برآمد.func1, برآمد.func2, ইত্যাদি" করতে পারেন।
হেল্লাতান

73
মডিউলটির প্রয়োজন হবে var m = প্রয়োজনীয় ('./ মায়োমডিউল'); , বিন্দু এবং স্ল্যাশ সহ। এইভাবে নোড.জেএস জানে আমরা একটি স্থানীয় মডিউল ব্যবহার করছি।
গুই প্রেমোঁসা

7
অবশ্যই ব্যবহারের বিষয়টি নিশ্চিত করুন: ('
সাজিদ

3
@ ইউপ দ্য ক্রিক একটি মডিউল দ্বারা 'রফতানি' হ'ল প্রকাশিত প্রতীকগুলিকে উল্লেখ করার দীর্ঘ aতিহ্য রয়েছে যা বহু প্রোগ্রামিং সিস্টেম এবং দশক জুড়ে রয়েছে। এটি নোড বিকাশকারীদের দ্বারা উদ্ভাবিত কোনও নতুন শব্দ নয়।
মার্ক রিড

218

এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে তবে আমি কিছু স্পেসিফিকেশন যোগ করতে চাই ...

আপনি উভয় ব্যবহার করতে পারেন exportsএবং module.exportsএই মত আপনার আবেদন আমদানী করার কোডে:

var mycode = require('./path/to/mycode');

আপনি যে বুনিয়াদি ব্যবহারের কেসটি দেখতে পাবেন (যেমন এক্সপ্রেসজেএস উদাহরণ কোডে) তা হল আপনি exports.js ফাইলে সেই বস্তুর উপর বৈশিষ্ট্য সেট করে যা আপনি তারপরে ব্যবহার করে আমদানি করেনrequire()

সুতরাং একটি সাধারণ গণনা উদাহরণে, আপনি থাকতে পারেন:

(Counter.js):

var count = 1;

exports.increment = function() {
    count++;
};

exports.getCount = function() {
    return count;
};

... তারপরে আপনার অ্যাপ্লিকেশনটিতে (ওয়েব.জেএস, বা অন্য কোনও .js ফাইল):

var counting = require('./counter.js');

console.log(counting.getCount()); // 1
counting.increment();
console.log(counting.getCount()); // 2

সাধারণ কথায়, আপনি প্রয়োজনীয় ফাইলগুলি ফাংশন হিসাবে ভাবতে পারেন যা কোনও একক বস্তু ফেরত দেয় এবং আপনি সেগুলি সেট করে ফিরে আসা বস্তুর সাথে বৈশিষ্ট্য (স্ট্রিংস, সংখ্যা, অ্যারে, ফাংশন, কিছু) যুক্ত করতে পারেন exports

কখনও কখনও আপনি চাইবেন যে কোনও require()বৈশিষ্ট্যযুক্ত কোনও বস্তুর চেয়ে আপনি কল করতে পারেন এমন কলটি থেকে কলটি ফিরে আসতে পারে function সেক্ষেত্রে আপনারও এটি সেট করা দরকার module.exports:

(Sayhello.js):

module.exports = exports = function() {
    console.log("Hello World!");
};

(App.js):

var sayHello = require('./sayhello.js');
sayHello(); // "Hello World!"

রফতানি এবং মডিউল.এপোর্টপোর্টগুলির মধ্যে পার্থক্যটি এই উত্তরটিতে এখানে আরও ভালভাবে ব্যাখ্যা করা হয়েছে


অন্য ফোল্ডারটিতে কিছু মডিউল প্রয়োজন যা আমি আমার হিসাবে কোনও মূল ফোল্ডারটি না পেয়ে কল করতে পারি?
ইগাল

@ ব্যবহারকারী 301639 আপনি ফাইল সিস্টেমের স্তরক্রমকে অতিক্রম করতে আপেক্ষিক পথগুলি ব্যবহার করতে পারেন। requireআপনি যে ফোল্ডারে এক্সিকিউট করেছেন তার সাথে তুলনামূলকভাবে শুরু হয় node app.jsrecommend আমি আপনাকে আরও স্পষ্ট কোড + ফোল্ডার কাঠামোর উদাহরণ সহ একটি নতুন প্রশ্ন পোস্ট করার পরামর্শ দিয়েছি যাতে আরও পরিষ্কার উত্তর পাওয়া যায়।
জেড ওয়াটসন

1
এটিকে কাজ করার জন্য আমাকে আপনার মডিউল.এপোর্টপোর্টের উদাহরণটি টুইঙ্ক করতে হয়েছিল। ফাইল: var sayHello = require('./ex6_module.js'); console.log(sayHello());এবং মডিউল:module.exports = exports = function() { return "Hello World!"; }
জেসন লিডন

1
ইনক্রিমেন্টের উদাহরণটি সত্যিই ভাল পাওয়া গেছে এবং আমি রফতানিতে যা করছি তার সাথে আমি যখন অতিরিক্ত বোঝা পেয়েছি তখনই আমার মন সতেজ করার জন্য এটি ব্যবহার করেছি।
মুঙ্কি

module.exports = exports = function(){...}2 য় exportsঠিক একটি পরিবর্তনশীল অধিকার? অন্য কথায়, এটি হতে পারেmodule.exports = abc = function()
Jeb50

60

নোট NodeJS মডিউল প্রক্রিয়া উপর ভিত্তি করে তৈরি যে CommonJS যা মত অনেক অন্যান্য বাস্তবায়নের মধ্যে সমর্থিত মডিউল RequireJS , কিন্তু SproutCore , CouchDB , Wakanda , OrientDB , ArangoDB , RingoJS , TeaJS , SilkJS , curl.js , অথবা এমনকি এডোবি ফটোশপের (মাধ্যমে PSLib )। আপনি এখানে পরিচিত বাস্তবায়নগুলির সম্পূর্ণ তালিকা খুঁজে পেতে পারেন ।

যদি আপনার মডিউল নোড নির্দিষ্ট বৈশিষ্ট্য বা মডিউল না ব্যবহার করে তবে আমি আপনাকে প্রচুর উত্সাহিত করি তার exportsপরিবর্তে আপনি ব্যবহার করার পরিবর্তে module.exports কমনজেএস স্ট্যান্ডার্ডের অংশ না , এবং পরে বেশিরভাগ অন্যান্য বাস্তবায়ন দ্বারা সমর্থিত নয়।

আর একটি নোডজেএস নির্দিষ্ট বৈশিষ্ট্য হ'ল যখন আপনি exportsএই থ্রেডে জেড ওয়াটসন প্রদত্ত সর্বশেষ উদাহরণের মতো নতুন বৈশিষ্ট্য এবং পদ্ধতি যুক্ত করার পরিবর্তে কোনও নতুন অবজেক্টের জন্য একটি রেফারেন্স অর্পণ করেন । আমি ব্যক্তিগতভাবে এই অনুশীলনকে নিরুৎসাহিত করব কারণ এটি কমনজেএস মডিউলগুলির ব্যবস্থার বিজ্ঞপ্তি রেফারেন্স সমর্থনটিকে ভেঙে দেয় । এটি তখন সমস্ত বাস্তবায়ন দ্বারা সমর্থিত নয় এবং জেড উদাহরণটি আরও সার্বজনীন মডিউল সরবরাহ করার জন্য এইভাবে (বা অনুরূপ একটি) লেখা উচিত:

(Sayhello.js):

exports.run = function() {
    console.log("Hello World!");
}

(App.js):

var sayHello = require('./sayhello');
sayHello.run(); // "Hello World!"

অথবা ES6 বৈশিষ্ট্য ব্যবহার করে

(Sayhello.js):

Object.assign(exports, {
    // Put all your public API here
    sayhello() {
        console.log("Hello World!");
    }
});

(App.js):

const { sayHello } = require('./sayhello');
sayHello(); // "Hello World!"

পিএস: দেখে মনে হচ্ছে অ্যাপিলিটারও কমন জেএস মডিউলগুলি প্রয়োগ করে, তবে বিজ্ঞপ্তি সংক্রান্ত রেফারেন্স সমর্থন ব্যতীত (দেখুন: প্রবর্তক এবং কমন জেএস মডিউলগুলি (ক্যাশিং এবং বিজ্ঞপ্তি রেফারেন্স) )


35

আপনি যদি কোনও নতুন অবজেক্টের exportsএবং / অথবা modules.exports: এর জন্য রেফারেন্স অর্পণ করেন তবে কয়েকটি বিষয় অবশ্যই আপনার যত্ন নিতে হবে :

1. সমস্ত বৈশিষ্ট্য / পদ্ধতি যা মূল সাথে যুক্ত ছিল exportsবা module.exportsঅবশ্যই হারিয়ে গেছে কারণ রফতানি করা অবজেক্টটি এখন অন্য নতুনটিকে রেফারেন্স করবে

এটি সুস্পষ্ট, তবে আপনি যদি কোনও বিদ্যমান মডিউলটির শুরুতে একটি রফতানি পদ্ধতি যুক্ত করেন তবে নিশ্চিত হন যে দেশীয় রফতানি হওয়া অবজেক্টটি অন্য কোনও অবজেক্টের শেষে উল্লেখ করছে না

exports.method1 = function () {}; // exposed to the original exported object
exports.method2 = function () {}; // exposed to the original exported object

module.exports.method3 = function () {}; // exposed with method1 & method2

var otherAPI = {
    // some properties and/or methods
}

exports = otherAPI; // replace the original API (works also with module.exports)

২. কোনও নতুন মান exportsবা module.exportsরেফারেন্সের ক্ষেত্রে তারা একই জিনিসটির আর কোনও উল্লেখ করে না

exports = function AConstructor() {}; // override the original exported object
exports.method2 = function () {}; // exposed to the new exported object

// method added to the original exports object which not exposed any more
module.exports.method3 = function () {}; 

3. কৌতুকপূর্ণ ফলাফল। যদি আপনি উভয়ের রেফারেন্স পরিবর্তন করেন exportsএবং module.exportsকোন এপিআই উন্মুক্ত হয়েছে তা বলা শক্ত (এটি module.exportsজয়ের মতো দেখায় )

// override the original exported object
module.exports = function AConstructor() {};

// try to override the original exported object
// but module.exports will be exposed instead
exports = function AnotherConstructor() {}; 

29

মডিউল.এক্সপোর্টস সম্পত্তি বা রফতানি অবজেক্ট মডিউলটিকে অ্যাপ্লিকেশনটির সাথে কী ভাগ করা উচিত তা নির্বাচন করতে দেয়

এখানে চিত্র বর্ণনা লিখুন

আমি module_export প্রাপ্তিসাধ্য এ একটি ভিডিও আছে এখানে


18

আপনার প্রোগ্রামের কোডটি একাধিক ফাইলের উপর বিভাজন করার সময়, module.exportsমডিউলটির গ্রাহককে ভেরিয়েবল এবং ফাংশন প্রকাশ করার জন্য ব্যবহৃত হয়। require()আপনার সোর্স ফাইলে কল সংশ্লিষ্ট প্রতিস্থাপিত হয়েছে module.exportsমডিউল থেকে লোড হয়েছে।

মডিউল লেখার সময় মনে রাখবেন

  • মডিউল লোডগুলি ক্যাশে করা হয়, কেবল প্রাথমিক কলটি জাভাস্ক্রিপ্টের মূল্যায়ন করে।
  • কোনও মডিউলের অভ্যন্তরে স্থানীয় ভেরিয়েবল এবং ফাংশন ব্যবহার করা সম্ভব, সবকিছু রফতানির প্রয়োজন হয় না।
  • module.exportsবস্তুর এছাড়াও হিসাবে পাওয়া যায় exportsসাধারণভাবে সংক্ষেপে। তবে কোনও একক ফাংশন ফিরিয়ে দেওয়ার সময় সর্বদা ব্যবহার করুন module.exports

মডিউল ডায়াগ্রাম রপ্তানি

মতে: "মডিউলগুলি পার্ট 2 - মডিউল রাইটিং"


9

রেফারেন্স লিঙ্কটি হ'ল:

exports = module.exports = function(){
    //....
}

exportsবা এর বৈশিষ্ট্যmodule.exports যেমন ফাংশন বা ভেরিয়েবলগুলি বাইরে প্রকাশ করা হবে

আপনার আরও মনোযোগ দিতে হবে এমন কিছু আছে: যাবেন না override রফতানি ।

কেন?

যেহেতু কেবলমাত্র মডিউল.এক্সপোর্টগুলির রেফারেন্স রফতানি করে, আপনি রফতানিতে বৈশিষ্ট্য যুক্ত করতে পারেন তবে আপনি যদি রফতানিকে ওভাররাইড করেন তবে রেফারেন্স লিঙ্কটি নষ্ট হয়ে যাবে।

ভালো উদাহরণ :

exports.name = 'william';

exports.getName = function(){
   console.log(this.name);
}

খারাপ উদাহরণ:

exports = 'william';

exports = function(){
     //...
}

আপনি যদি কেবলমাত্র একটি ফাংশন বা পরিবর্তনশীল প্রকাশ করতে চান তবে এই:

// test.js
var name = 'william';

module.exports = function(){
    console.log(name);
}   

// index.js
var test = require('./test');
test();

এই মডিউলটি কেবল একটি ফাংশন প্রকাশ করেছে এবং নামের সম্পত্তি বাইরের জন্য ব্যক্তিগত।


6

আপনি node.js যেমন HTTP, sys ইত্যাদি ডাউনলোড এবং ইনস্টল করার সময় নোড.জেজে কিছু ডিফল্ট বা বিদ্যমান মডিউল থাকে

যেহেতু তারা ইতিমধ্যে নোড.জেজে রয়েছে, যখন আমরা এই মডিউলগুলি ব্যবহার করতে চাই আমরা মূলত আমদানি মডিউলগুলি পছন্দ করি তবে কেন? কারণ তারা ইতিমধ্যে নোড.জেএস-এ উপস্থিত রয়েছে আমদানি করা তাদের নোড.জেএস থেকে নেওয়া এবং আপনার প্রোগ্রামে রাখার মতো। এবং তারপরে সেগুলি ব্যবহার করে।

যেখানে রপ্তানী ঠিক বিপরীত হয়, তাহলে আপনি মডিউল যদি আপনি চান তৈরি করছেন, আসুন বলতে মডিউল addition.js এবং Node.js মধ্যে যে মডিউল নির্বাণ, আপনি এটা রপ্তানি করে না।

আমি এখানে কিছু লিখুন, মনে রাখবেন, module.exports.additionTwo হিসাবে একই exports.additionTwo

হু, তাই কারণ, আমরা পছন্দ করি

exports.additionTwo = function(x)
{return x+2;};

পথটি সম্পর্কে সাবধানতা অবলম্বন করুন

বলুন আপনি একটি সংযোজন.জেএস মডিউল তৈরি করেছেন,

exports.additionTwo = function(x){
return x + 2;
};

যখন আপনি এটি আপনার NODE.JS কমান্ড প্রম্পটে চালাবেন:

node
var run = require('addition.js');

এই বলে ভুল হবে

ত্রুটি: মডিউল সংযোজনগুলি খুঁজে পাওয়া যায় না s

এটি কারণ আমরা নোড.জেএস প্রক্রিয়াটি অতিরিক্ত অক্ষম করতে পারি না কারণ আমরা পথটির উল্লেখ করি নি। সুতরাং, আমরা NODE_PATH ব্যবহার করে পথ নির্ধারণ করতে পারি

set NODE_PATH = path/to/your/additon.js

এখন, এটি কোনও ত্রুটি ছাড়াই সফলভাবে চালানো উচিত !!

আরও একটি বিষয়, আপনি NODE_PATH সেট না করে অতিরিক্ত.js ফাইলটি চালাতে পারেন, আপনার নোডেজ কমান্ড প্রম্পটে ফিরে যান:

node
var run = require('./addition.js');

যেহেতু আমরা এটি বর্তমান ডিরেক্টরিতে এটি বলে এখানে পথ সরবরাহ করছি ./এটিও সাফল্যের সাথে চালানো উচিত।


1
এটি রফতানি বা রফতানি?
rudrasiva86

সহায়তার জন্য ধন্যবাদ :)
জাম্পম্যান

3

একটি মডিউল সম্পর্কিত কোডকে কোডের একক ইউনিটে আবদ্ধ করে। মডিউল তৈরি করার সময়, এটি সম্পর্কিত সমস্ত ফাংশন একটি ফাইলে সরানো হিসাবে ব্যাখ্যা করা যেতে পারে।

ধরুন হ্যালো.জেএস ফাইল রয়েছে যা দুটি ফাংশন অন্তর্ভুক্ত করে

sayHelloInEnglish = function() {
  return "Hello";
};
sayHelloInSpanish = function() {
  return "Hola";
};

কোডটির ইউটিলিটি একাধিক কল হলে আমরা কেবল একটি ফাংশন লিখি।

ধরুন আমরা ফাংশনটির ইউটিলিটি একটি আলাদা ফাইলে বাড়াতে চাই World.js বলি, এক্ষেত্রে কোনও ফাইল রফতানি করা ছবিতে আসে যা মডিউল.এক্সপোর্টগুলি দ্বারা প্রাপ্ত হতে পারে।

আপনি কেবল নীচে দেওয়া কোড দ্বারা উভয় ফাংশন রফতানি করতে পারেন

var anyVariable={
 sayHelloInEnglish = function() {
      return "Hello";
    };
  sayHelloInSpanish = function() {
      return "Hola";
    }; 
}
module.export=anyVariable;

এই ফাংশনগুলি ব্যবহার করার জন্য এখন আপনার ফাইলের নাম ওয়ার্ল্ড.জেএস ইনর্ডারে প্রয়োজন

var world= require("./hello.js");

ধন্যবাদ যদি এটি আপনাকে আমার উত্তরটি গ্রহণ করতে সহায়তা করেছে :)
শান্তনু মাদানে

1
পার্টি পল থেকে কিছুটা দেরি :)
বেন টালিডিয়োরোস

@ বেনতালিডোরস আমিও মনে করি তিনি দেরী করেছেন এবং আমি মনে করি যে তাঁর যে কোনও পরিবর্তনশীল বস্তুর অনেক ত্রুটি রয়েছে। উপরের লাইনটি হেইলোইনস্প্যানিশ পদ্ধতিটি সেমিকোলন (;) দিয়ে শেষ করা উচিত নয় এবং হেলোআইএনস্প্যানিশ = ফাংশনটি ভুল। এই জিনিসটির সাথে সমস্ত জিনিসই ভুল। আমি তার উত্তর সম্পাদনা হবে
ঐশ্বরিক

1
সম্পাদনা অক্ষম। এই উত্তরে আলফাডোগ আর কি সম্পাদনা করেছে ??
ঐশ্বরিক

স্রেফ বিন্যাসকরণ। এটির কোনও ক্রেজিড এস thing জিনিসটি আমি না পারলে এবং আমি নিশ্চিতভাবেই এটি না করি, তবে এটি মোটেও বৈধ জেএস নয়
বেন টালিডিয়োরোস

2

উদ্দেশ্যটি হ'ল:

মডিউলার প্রোগ্রামিং হ'ল একটি সফ্টওয়্যার ডিজাইন কৌশল যা একটি প্রোগ্রামের কার্যকারিতাটিকে স্বতন্ত্র, বিনিময়যোগ্য মডিউলগুলিতে পৃথক করার উপর জোর দেয়, যেমন প্রতিটি কাঙ্ক্ষিত কার্যকারিতাটির কেবলমাত্র একটি দিক সম্পাদন করতে প্রয়োজনীয় সবকিছু অন্তর্ভুক্ত করে।

উইকিপিডিয়া

আমি কল্পনা করেছিলাম মডিউল / পুনঃব্যবহারযোগ্য কোড ব্যতীত একটি বৃহত প্রোগ্রামগুলি লেখা মুশকিল হয়ে পড়ে। নোডেজে আমরা module.exportsআমাদের প্রোগ্রামটি কী প্রকাশ করি এবং রচনা করি তা নির্ধারণ করে মডিউলার প্রোগ্রামগুলি তৈরি করতে পারি require

এই উদাহরণটি ব্যবহার করে দেখুন:

fileLog.js

function log(string) { require('fs').appendFileSync('log.txt',string); }

module.exports = log;

stdoutLog.js

function log(string) { console.log(string); }

module.exports = log;

program.js

const log = require('./stdoutLog.js')

log('hello world!');

এক্সিকিউট

ode নোড প্রোগ্রাম.জেএস

ওহে বিশ্ব!

এখন ./fileLog.js এর জন্য ./stdoutLog.js অদলবদল করার চেষ্টা করুন ।


1

মডিউল সিস্টেমের উদ্দেশ্য কী?

এটি নিম্নলিখিত বিষয়গুলি সম্পাদন করে:

  1. আমাদের ফাইলগুলি ফুল ফোটানো থেকে বড় আকারের মধ্যে রাখে । উদাহরণস্বরূপ, 5000 লাইন কোডে ফাইল থাকা বিকাশের সময় মোকাবেলা করা সত্যই কঠিন।
  2. উদ্বেগের বিচ্ছেদ কার্যকর করে। আমাদের কোডটি একাধিক ফাইলে বিভক্ত হওয়ার ফলে প্রতিটি ফাইলের জন্য উপযুক্ত ফাইলের নাম থাকতে পারে। এই পদ্ধতিটি আমরা প্রতিটি মডিউলটি কী করে এবং কোথায় এটি সন্ধান করতে পারে তা সহজেই সনাক্ত করতে পারি (ধরে নেওয়া আমরা একটি লজিকাল ডিরেক্টরি কাঠামো তৈরি করেছি যা এখনও আপনার দায়বদ্ধ)।

মডিউল থাকা আমাদের কোডকে আরও রক্ষণাবেক্ষণ করে তোলে এমন কোডের কিছু অংশ সন্ধান করা সহজ করে তোলে।

এটা কিভাবে কাজ করে?

NodejS CommomJS মডিউল সিস্টেমটি ব্যবহার করে যা নিম্নলিখিত পদ্ধতিতে কাজ করে:

  1. কোনও ফাইল যদি কিছু রফতানি করতে চায় তবে module.exportসিনট্যাক্স ব্যবহার করে তা ঘোষণা করতে হবে
  2. কোনও ফাইল যদি কিছু আমদানি করতে চায় তবে require('file')সিনট্যাক্স ব্যবহার করে তা ঘোষণা করতে হবে

উদাহরণ:

test1.js

const test2 = require('./test2');    // returns the module.exports object of a file

test2.Func1(); // logs func1
test2.Func2(); // logs func2

test2.js

module.exports.Func1 = () => {console.log('func1')};

exports.Func2 = () => {console.log('func2')};

অন্যান্য দরকারী জিনিসগুলি জানতে:

  1. মডিউলগুলি ক্যাশে হচ্ছে । আপনি যখন 2 টি ভিন্ন ফাইলে একই মডিউলটি লোড করছেন তখন মডিউলটি কেবল একবার লোড করতে হবে। দ্বিতীয়বার কrequire() যখন একই মডিউলে ডাকা হয় তখন ক্যাশে থেকে টানা হয়।
  2. মডিউলগুলি সিঙ্ক্রোনাসে লোড হয় । এই আচরণটি আবশ্যক, যদি এটি অ্যাসিনক্রোনাস হয় তবে আমরা এখনই অবধি পাওয়া জিনিসটি অ্যাক্সেস করতে পারিনি require()

-3
let test = function() {
    return "Hello world"
};
exports.test = test;

4
এটি স্বীকৃত উত্তরের প্রথম স্নিপেটের মতো একই ধরণের উদাহরণ ( return "Hello world"কোনও পার্থক্য করে না), তবে কোনও ব্যাখ্যা ছাড়াই। উত্তর দেওয়ার আগে দয়া করে নিশ্চিত হয়ে নিন যে আপনার উত্তর বিষয়টিতে কিছু যুক্ত করবে।
বার্বসান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.