هر برنامه Node.js ماژول‌هایی دارد. این ماژول‌ها بخشی از بلاک‌های سازنده برنامه را تشکیل می‌دهند. آن‌ها به توسعه‌دهندگان کمک می‌کنند تا سریع‌تر کار کنند و کد ساختاریافته‌تری بنویسند. در این مقاله می‌آموزیم که Node Module چیست. همچنین با انواع Node Module آشنا خواهیم شد و روش درست استفاده از آن‌ها در برنامه‌هایمان را بررسی خواهیم کرد.

ماژول در جاوااسکریپت چیست؟

به عبارت ساده، یک ماژول یک قطعه کد جاوااسکریپتی با قابلیت استفاده مجدد است. ماژول می‌تواند یک فایل .jsیا دایرکتوری حاوی فایل‌های .jsباشد. می‌توانیم محتوای این فایل‌ها را export کرده و از آن‌ها در فایل‌های دیگر استفاده نماییم.

ماژول‌ها به توسعه‌دهندگان کمک می‌کنند تا در برنامه نویسی به اصل DRY (Don’t Repeat Yourself) پایبند باشند. آن‌ها همچنین به تجزیه منطق پیچیده به قطعات کوچک‌تر، ساده و قابل مدیریت کمک می‌کنند.

انواع Node Module

سه نوع اصلی از Node moduleها وجود دارد که ما به عنوان توسعه‌دهنده Node.js با آن‌ها کار خواهیم کرد که عبارتند از:

ماژول‌های Built-in

Node.js با چند ماژول خارجی عرضه می‌شود. وقتی Node.js را نصب می‌کنیم، این ماژول‌ها برای استفاده در دسترس هستند. برخی از نمونه‌های متداول از Node moduleهای built-in به شرح زیر است:

می‌توانیم از ماژول‌های built-in با سینتکس زیر استفاده کنیم:

const someVariable = require('nameOfModule')

ما ماژول را با تابع requireلود می‌کنیم. باید نام ماژولی را که می‌خواهیم لود کنیم را به عنوان آرگومان به تابع requireارسال کنیم.

نکته‌ای که باید به آن توجه کنیم این است که نام ماژول باید داخل ' 'باشد. همچنین استفاده از constبرای تعریف متغیر تضمین می‌کند که هنگام فراخوانی، مقدار آن را بازنویسی نمی‌کنیم.

همچنین باید مقدار بازگشتی از تابع requireرا در someVariableذخیره کنیم. می‌توانیم آن متغیر را هر چیزی که می‌خواهیم نام‌گذاری کنیم. اما اغلب می‌بینیم که برنامه نویسان نام همان ماژول را به متغیر می‌دهند. به عنوان مثال:

const http = require('http') 

server = http.createServer((req, res) => { 
    res.writeHead(200, {'Content-Type': 'text/plain'}) 
    res.end('Hello World!')
})

server.listen(3000)

ما از تابع requireبرای لود ماژول built-in http استفاده می‌کنیم. سپس مقدار بازگشتی را در متغیری به نام httpذخیره می‌نماییم. مقدار بازگشتی از ماژول httpیک آبجکت است. از آنجایی که ما آن را با استفاده از تابع requireلود کرده‌ایم، اکنون می‌توانیم از آن در کد خود استفاده کنیم. برای مثال، ویژگی .createServerرا برای ایجاد یک سرور فراخوانی می‌کنیم.

ماژول‌های Local

هنگامی که ما با Node.js کار می‌کنیم، ماژول‌های local ایجاد می‌کنیم که آن‌ها را لود کرده و در برنامه خود مورد استفاده قرار می‌دهیم. در ادامه بررسی می‌کنیم که چگونه باید این کار را انجام دهیم.

یک ماژول sayHelloساده ایجاد می‌کنیم که یک userNameرا به عنوان پارامتر می‌گیرد و “hello” و نام کاربر را چاپ می‌کند.

function sayHello(userName) {
  console.log(`Hello ${userName}!`)
}

module.exports = sayHello

ابتدا باید تابع را ایجاد کنیم. سپس با استفاده از سینتکس module.exportsآن را export می‌نماییم. با این حال لزومی ندارد که حتما یک تابع باشد. ماژول ما می‌تواند یک آبجکت، آرایه یا هر نوع داده‌ای را export کند.

چگونه باید ماژول‌های local خود را لود کنیم؟

ما می‌توانیم ماژول‌های local خود را لود کنیم و از آن‌ها در فایل‌های دیگر استفاده کنیم. برای انجام این کار، مانند ماژول‌های built-in، تابع requireرا به کار می‌گیریم.

اما با توابع سفارشی خود، باید مسیر فایل را به عنوان آرگومان ارائه کنیم. در مثالی که داریم ، مسیر './sayHello'است (که به فایل sayHello.jsرفرنس می‌دهد).

const sayHello = require('./sayHello')
sayHello("Maria") // Hello Maria!

هنگامی که ماژول خود را لود کردیم، می‌توانیم در کد خود به آن رفرنس دهیم.

ماژول‌های Third-party

نکته جالبی که در مورد استفاده از ماژول‌ها در Node.js وجود دارد این است که می‌توانیم آن‌ها را با دیگران به اشتراک بگذاریم. Node Package Manager (NPM) این امکان را برای ما فراهم می‌کند. هنگامی که Node.js را نصب می‌کنیم، NPM نیز همراه با آن نصب می‌شود.

با NPM، می‌توانیم ماژول‌های خود را به عنوان بسته از طریق رجیستری NPM به اشتراک بگذاریم. همچنین می‌توانیم از بسته‌هایی که دیگران به اشتراک گذاشته‌اند، استفاده کنیم.

نحوه استفاده از پکیج‌های third-party

برای استفاده از یک پکیج third-party در برنامه خود، ابتدا باید آن را نصب کنیم. برای نصب یک پکیج می‌توانیم دستور زیر را اجرا کنیم.

npm install <name-of-package>

به عنوان مثال، پکیج‌ای به نام capitalizeوجود دارد. این پکیج عملکردهایی مانند بزرگ کردن حرف اول یک کلمه را انجام می‌دهد.

با اجرای دستور زیر پکیج capitalize را نصب می‌کنیم:

npm install capitalize

برای استفاده از پکیج نصب شده، باید آن را با تابع requireلود کنیم.

const capitalize = require('capitalize)

و سپس می‌توانیم از آن در کد خود استفاده کنیم، به عنوان مثال:

const capitalize = require('capitalize')
console.log(capitalize("hello")) // Hello

این مثالی که بررسی کردیم یک نمونه ساده است. اما پکیج‌هایی وجود دارند که وظایف پیچیده‌تری را انجام می‌دهند و می‌توانند در زمان ما صرفه‌جویی کنند.

به عنوان مثال، می‌توانیم از پکیج Express.js که یک فریمورک Node.js است استفاده کنیم. این پکیج ساخت اپلیکیشن‌ها را سریع‌تر و ساده‌تر می‌کند.

جمع‌بندی

در این مقاله سعی کردیم تا با انواع Node Module آشنا شویم و روش درست استفاده از آن‌ها در برنامه‌های خود را باهم بررسی کردیم.