ماژول ها📤📥 در 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:
-
ماژول های اصلی: اینها ماژول های داخلی ارائه شده توسط Node.js هستند که می توانند بدون نیاز به نصب اضافی استفاده شوند. مثالها عبارتند از
fs
(سیستم فایل)،http
(سرور و سرویس گیرنده HTTP)،os
(سیستم عامل) و موارد دیگر. - ماژول های محلی: اینها ماژول هایی هستند که در برنامه خود ایجاد می کنید. آنها معمولاً در فایل ها و پوشه های جداگانه سازماندهی می شوند تا پایگاه کد را تمیز و قابل نگهداری نگه دارند.
-
ماژول های شخص ثالث: اینها ماژول هایی هستند که توسط
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.j
s، و از توابع مجزای آن و 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
.
این پایان نیست، در آینده چند مورد دیگر در مورد آن اضافه خواهم کرد😊.
امیدوارم دانش آموزنده ای کسب کنید✒️، ممنون که مطالعه کردید📑.