هر برنامه Node.js ماژولهایی دارد. این ماژولها بخشی از بلاکهای سازنده برنامه را تشکیل میدهند. آنها به توسعهدهندگان کمک میکنند تا سریعتر کار کنند و کد ساختاریافتهتری بنویسند. در این مقاله میآموزیم که Node Module چیست. همچنین با انواع Node Module آشنا خواهیم شد و روش درست استفاده از آنها در برنامههایمان را بررسی خواهیم کرد.
به عبارت ساده، یک ماژول یک قطعه کد جاوااسکریپتی با قابلیت استفاده مجدد است. ماژول میتواند یک فایل .jsیا دایرکتوری حاوی فایلهای .jsباشد. میتوانیم محتوای این فایلها را export کرده و از آنها در فایلهای دیگر استفاده نماییم.
ماژولها به توسعهدهندگان کمک میکنند تا در برنامه نویسی به اصل DRY (Don’t Repeat Yourself) پایبند باشند. آنها همچنین به تجزیه منطق پیچیده به قطعات کوچکتر، ساده و قابل مدیریت کمک میکنند.
سه نوع اصلی از Node moduleها وجود دارد که ما به عنوان توسعهدهنده Node.js با آنها کار خواهیم کرد که عبارتند از:
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را برای ایجاد یک سرور فراخوانی میکنیم.
هنگامی که ما با Node.js کار میکنیم، ماژولهای local ایجاد میکنیم که آنها را لود کرده و در برنامه خود مورد استفاده قرار میدهیم. در ادامه بررسی میکنیم که چگونه باید این کار را انجام دهیم.
یک ماژول sayHelloساده ایجاد میکنیم که یک userNameرا به عنوان پارامتر میگیرد و “hello” و نام کاربر را چاپ میکند.
function sayHello(userName) {
console.log(`Hello ${userName}!`)
}
module.exports = sayHello
ابتدا باید تابع را ایجاد کنیم. سپس با استفاده از سینتکس module.exportsآن را export مینماییم. با این حال لزومی ندارد که حتما یک تابع باشد. ماژول ما میتواند یک آبجکت، آرایه یا هر نوع دادهای را export کند.
ما میتوانیم ماژولهای local خود را لود کنیم و از آنها در فایلهای دیگر استفاده کنیم. برای انجام این کار، مانند ماژولهای built-in، تابع requireرا به کار میگیریم.
اما با توابع سفارشی خود، باید مسیر فایل را به عنوان آرگومان ارائه کنیم. در مثالی که داریم ، مسیر './sayHello'است (که به فایل sayHello.jsرفرنس میدهد).
const sayHello = require('./sayHello')
sayHello("Maria") // Hello Maria!
هنگامی که ماژول خود را لود کردیم، میتوانیم در کد خود به آن رفرنس دهیم.
نکته جالبی که در مورد استفاده از ماژولها در Node.js وجود دارد این است که میتوانیم آنها را با دیگران به اشتراک بگذاریم. Node Package Manager (NPM) این امکان را برای ما فراهم میکند. هنگامی که Node.js را نصب میکنیم، NPM نیز همراه با آن نصب میشود.
با NPM، میتوانیم ماژولهای خود را به عنوان بسته از طریق رجیستری NPM به اشتراک بگذاریم. همچنین میتوانیم از بستههایی که دیگران به اشتراک گذاشتهاند، استفاده کنیم.
برای استفاده از یک پکیج 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 آشنا شویم و روش درست استفاده از آنها در برنامههای خود را باهم بررسی کردیم.