برنامه نویسی

ماژول ها📤📥 در Node.js: از مبتدی تا پیشرفته💻

هر دو Browser's javascript (ماژول های ECMAScript (ESM)) و Node.js's javascript ماژول ها را پشتیبانی می کند، اما تفاوت در نحو وجود دارد. پس از مطالعه و کسب دانش روشن در مورد ماژول ها در node.js، می توانید تفاوت بین آنها را بخوانید.

پس بیایید شروع کنیم😃.

✒️ماژول ها: تعریف

ماژول ها به شما این امکان را می دهند structure و contain your code within distinct files and folders، ارتقاء سازماندهی آن و reusability. با استفاده از ماژول ها، می توانید برنامه خود را به واحدهای کوچکتر تقسیم کنید، که هر کدام هدف خاصی را دنبال می کنند. سپس این واحدها می توانند برای ساختن یک برنامه کاربردی جامع و کاربردی یکپارچه شوند. آنها در Node.js اجزای اساسی هستند که با استفاده از موتور V8 کروم، نقش مهمی در این زمان اجرا جاوا اسکریپت دارند.

به زبان ساده، می‌توانیم از عملکرد یک فایل در فایل دیگر استفاده کنیم و بالعکس.

✒️انواع ماژول ها در Node.js:

  1. ماژول های اصلی: اینها ماژول های داخلی ارائه شده توسط Node.js هستند که می توانند بدون نیاز به نصب اضافی استفاده شوند. مثالها عبارتند از fs (سیستم فایل)، http (سرور و سرویس گیرنده HTTP)، os (سیستم عامل) و موارد دیگر.
  2. ماژول های محلی: اینها ماژول هایی هستند که در برنامه خود ایجاد می کنید. آنها معمولاً در فایل ها و پوشه های جداگانه سازماندهی می شوند تا پایگاه کد را تمیز و قابل نگهداری نگه دارند.
  3. ماژول های شخص ثالث: اینها ماژول هایی هستند که توسط Node.js community و در دسترس از طریق Node Package Manager (NPM). NPM یک مدیریت بسته است که به توسعه دهندگان اجازه می دهد تا به راحتی کد را به اشتراک بگذارند و دوباره از آن استفاده کنند. شما می توانید با نصب ماژول های شخص ثالث در پروژه های خود از آنها با استفاده از NPM استفاده کنید.

📤صادرات از یک ماژول:

برای در دسترس قرار دادن توابع، متغیرها یا کلاس‌ها از یک ماژول به بخش‌های دیگر برنامه، باید آنها را صادر کنید. Node.js راه های مختلفی برای صادرات آیتم ها از یک ماژول ارائه می دهد:

  • صادرات به نام: با استفاده از اقلام فردی را تک تک صادر کنید exports یا module.exports.
  • صادرات پیش فرض: یک مورد واحد (معمولاً یک شی یا یک تابع) را به عنوان صادرات پیش فرض با استفاده از آن صادر کنید module.exports.

توجه: صادرات نام‌گذاری شده و پیش‌فرض را در بخش بعدی این آموزش مشاهده خواهیم کرد.

📥وارد کردن ماژول:

برای استفاده از عملکرد ماژول های دیگر در ماژول فعلی خود، باید آنها را وارد کنید. Node.js تابع require() را برای وارد کردن ماژول ها ارائه می کند:

  • ماژول های اصلی: بدون هیچ مسیری وارد شده است (مثلا const fs = require(‘fs’)).
  • ماژول های محلی: با استفاده از مسیرهای نسبی وارد شده است (به عنوان مثال، const myModule = require(‘./myModule’)).
  • ماژول های شخص ثالث: اگر با استفاده از NPM نصب شده باشند مانند ماژول های محلی وارد می شود.

خیلی تئوری😅!!!!!، با مثال بفهمیم😃.

مرحله 1: ماژول را ایجاد کنید

یک فایل جدید با نام ایجاد کنید mathCalOperations.js:

// mathCalOperations.js

//ARROW FUNCTION
const add = (a, b) => {
  return a + b;
};

//NORMAL FUNCTION
function subtract(a, b) {
  return a - b;
};
//BOTH STYLE ARE ACCEPTABLE

const multiply = (a, b) => {
  return a * b;
};

const divide = (a, b) => {
  if (b === 0) {
    throw new Error('Divide by zero error, Cannot divide by zero!');
  }
  return a / b;
};

const PI = 3.14159;

module.exports = {
  add,
  subtract,
  multiply,
  divide,
  PI,
};

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این ماژول، توابع مجزای جمع، تفریق، ضرب و تقسیم به همراه یک PI ثابت داریم.

گام 2: ماژول را وارد و استفاده کنید

یک فایل جدید با نام ایجاد کنید app.js:

// app.js
const cal = require('./mathCalOperations');

const num1 = 10;
const num2 = 5;

console.log(`Addition: ${cal.add(num1, num2)}`);
console.log(`Subtraction: ${cal.subtract(num1, num2)}`);
console.log(`Multiplication: ${cal.multiply(num1, num2)}`);

try {
  console.log(`Division: ${cal.divide(num1, num2)}`);
} catch (error) {
  console.error(error.message);
}

console.log(`Value of PI: ${cal.PI}`);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این فایل از require() تابع برای وارد کردن mathCalOperations.js مدول. برای انجام عملیات حسابی روی اعداد num1 و num2 توابع جمع، تفریق، ضرب و تقسیم را صدا می زنیم و همچنین به PI ثابت دسترسی پیدا می کنیم.

مرحله 3: برنامه را اجرا کنید

هر دو فایل را در یک دایرکتوری ذخیره کنید و اجرا کنید app.js با استفاده از Node.js:

$ node app.js

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:

Addition: 15
Subtraction: 5
Multiplication: 50
Division: 2
Value of PI: 3.14159

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این mathCalOperations.js ماژول با موفقیت وارد شد app.js، و از توابع مجزای آن و PI ثابت برای انجام عملیات ریاضی و دسترسی به مقدار PI استفاده کردیم.
این مثال نشان می دهد که چگونه می توان یک ماژول با توابع و متغیرهای جداگانه ایجاد کرد و آنها را با استفاده از آنها صادر کرد module.exportsو با استفاده از آن ها را در یک فایل جاوا اسکریپت وارد کرده و استفاده کنید require().

در پایان، ما یک را برمی گردانیم object { }از آنجایی که توابع و متغیرهای زیادی وجود دارد، شی بهترین راه برای ترکیب است (شما همچنین می توانید از کلاس استفاده کنید).

چه می شود اگر یک شی را بنویسید و آن را برگردانید.

بنابراین ما می توانیم در بالا برنامه مانند این.

// mathCalOperations.js
const cal = {
    add: (a, b) => {
    return a + b;
  },
  subtract: (a, b) => {
    return a - b;
  },
  multiply: (a, b) => {
    return a * b;
  },
  divide: (a, b) => {
    if (b === 0) {
      throw new Error('Divide by zero error, Cannot divide by zero!');
    }
    return a / b;
  },
};

module.exports = cal;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا ما از ابتدا شیء را می سازیم و آن را برمی گردانیم در حالی که در مورد قبلی در حال ساخت بودیم object{} در پایان

📍توجه: Module.exports یک شی است.
این یک شی خاص است که برای تعریف اینکه یک ماژول چه چیزی را صادر می کند، به عنوان مثال، چه عملکردها یا داده هایی را در دسترس سایر بخش های برنامه قرار می دهد، استفاده می شود.
اگر فقط یک تابع یا یک متغیر را در Node.js با استفاده از ارسال کنید module.exports، کاملاً خوب کار خواهد کرد. در Node.js، module.exports می تواند هر مقداری را داشته باشد، نه فقط اشیاء را.
بنابراین، module.exports یک شی است و با آن می توانیم هر نوع را ارسال کنیم.


بنابراین، اینجا به پایان می رسیم😃.
که در، 📤صادر کردن از بخش ماژول، صادرات نامگذاری شده و پیش فرض را رها کردیم.
آن را ادامه دهیم.

📌صادرات با نام:

صادرات نام‌گذاری شده به شما امکان می‌دهد چندین آیتم (توابع، متغیرها یا کلاس‌ها) را از یک ماژول صادر کنید و آنها را به‌صورت جداگانه با نام آنها در بخش‌های دیگر برنامه خود وارد کنید. وقتی از صادرات نام‌گذاری شده استفاده می‌کنید، به صراحت مشخص می‌کنید که چه مواردی را می‌خواهید برای وارد کردن در دسترس قرار دهید.

mathCalOperations.js:

// mathCalOperations.js
const add = (a, b) => {
  return a + b;
};

const subtract = (a, b) => {
  return a - b;
};

module.exports.add123 = add;
module.exports.subtract123 = subtract;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، دو تابع جمع و تفریق داریم mathCalOperations.js مدول. ما آنها را با استفاده از module.exports شی با نام خصوصیات اضافه و تفریق. این باعث می شود که عملکردها به صورت جداگانه در هنگام وارد کردن ماژول در یک فایل دیگر قابل دسترسی باشند.

app.js:

// app.js
const cal = require('./mathCalOperations');

const num1 = 10;
const num2 = 5;

console.log(`Addition: ${cal.add123(num1, num2)}`);
console.log(`Subtraction: ${cal.subtract123(num1, num2)}`);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در app.js، ما وارد می کنیم mathCalOperations.js ماژول و ذخیره آن در cal متغیر. سپس می توانیم با استفاده از اضافه و تفریق به توابع صادر شده دسترسی داشته باشیم cal.add123() و cal.subtract123() به ترتیب.

📌صادرات پیش فرض:

صادرات پیش‌فرض به شما امکان می‌دهد یک آیتم واحد (معمولاً یک شی، یک تابع یا یک کلاس) را به عنوان صادرات اصلی ماژول صادر کنید. هنگام استفاده از صادرات پیش‌فرض، می‌توانید مورد را با هر نامی که می‌خواهید وارد کنید و در هنگام وارد کردن انعطاف‌پذیرتر شود.

greeting.js:

// greeting.js
const greet = (name) => {
  return `Hello, ${name}!`;
};

module.exports = greet;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

app.js:

// app.js
const customGreeting = require('./greeting');

const name="John";
console.log(customGreeting(name));

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در app.js، ماژول greeting.js را وارد کرده و تابع پیش‌فرض صادر شده را در متغیر customGreeting ذخیره می‌کنیم. از آنجایی که یک صادرات پیش‌فرض است، می‌توانیم هر نامی که می‌خواهیم به آن بدهیم. سپس تابع را با استفاده از customGreeting(name) فراخوانی می کنیم تا پیام تبریک را دریافت کنیم.

اولین نمونه از این آموزش، بالا در بالا نیز نمونه ای از Default Export.

این پایان نیست، در آینده چند مورد دیگر در مورد آن اضافه خواهم کرد😊.
امیدوارم دانش آموزنده ای کسب کنید✒️، ممنون که مطالعه کردید📑.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا