اگر به توسعهٔ وب علاقهمند هستید، ممکن است نام Node.js را شنیده باشید، یک محیط اجرای محبوب جاوا اسکریپت که بسیاری از وبسایتها و برنامهها را نیرو میدهد. اما Node.js دقیقا چیست و چرا به طور گسترده از آن استفاده میشود؟ در این مقاله، همهٔ چیزهایی را که باید در مورد Node.js بدانید، از تاریخچه و ویژگیهای آن گرفته تا کاربرد و ساختار آن، توضیح خواهیم داد. در پایان این مقاله، درک بهتری از Node.js خواهید داشت.
فهرست مطالب
– Node.js چیست؟
– عملکرد نودجیاس
– چگونه از Node.js استفاده کنیم؟
– ساختار پروژهٔ Node.js
– چگونه یک وب سرور ساده با Node.js ایجاد کنیم؟
Node.js چیست؟
Node.js یک محیط اجرای جاوا اسکریپت متن باز و چند پلتفرمی است که به شما امکان میدهد کد جاوا اسکریپت را خارج از مرورگر وب اجرا کنید. نودجیاس در سال 2009 توسط رایان دال ایجاد شد که از معماری رویداد محور مرورگر وب الهام گرفته شده بود. Node.js از موتور V8 استفاده میکند، یعنی همان موتوری که Google Chrome و سایر مرورگرهای مبتنی بر Chromium را تامین میکند. V8 یک موتور سریع و کارآمد است که میتواند کدهای جاوا اسکریپت را با سرعت بالا اجرا کند.
Node.js یک چارچوب یا یک کتابخانه نیست، بلکه پلتفرمی است که مجموعهای از ماژولها و ابزارهای داخلی را ارائه میدهد که میتوانید از آنها برای ایجاد انواع مختلف برنامهها استفاده کنید. Node.js عمدتاً برای توسعهٔ backend استفاده میشود، یعنی بخشی از توسعهٔ وب که با منطق و دادههای پشت صحنه سروکار دارد. با این حال، Node.js میتواند برای اهداف دیگری مانند برنامههای کاربردی دسکتاپ، ابزارهای خط فرمان، میکروسرویسها، دستگاههای اینترنت اشیا (IoT) و غیره هم استفاده شود.
عملکرد نودجیاس
یکی از ویژگیهای اصلی Node.js ماهیت ناهمزمان آن است. یعنی Node.js میتواند چندین درخواست را به طور همزمان، بدون انتظار برای اتمام یکی قبل از رفتن به درخواست بعدی، انجام دهد. این امر Node.js را بسیار مقیاسپذیر و کارآمد میکند، مخصوصاً برای برنامههایی که با عملیات ورودی/خروجی (I/O) زیادی سروکار دارند، مانند درخواستهای شبکه، پرسوجوهای پایگاه داده، عملیات فایل و غیره.
یکی دیگر از ویژگیهای Node.js معماری رویداد محور آن است. یعنی Node.js برای راهاندازی اعمال یا توابع خاص، به رویدادها متکی است. به عنوان مثال، هنگامی که کاربر روی یک دکمه در یک صفحهٔ وب کلیک میکند، یک رویداد منتشر میشود و یک تابع شنوندهٔ رویداد مربوطه اجرا میشود. Node.js از یک حلقه رویداد برای مدیریت جریان رویدادها و تماسها در یک رشتهٔ واحد استفاده میکند. فراخوانی، تابعی است که به عنوان آرگومان به تابع دیگری ارسال میشود و پس از اتمام آن تابع اجرا میشود. یک callback میتواند یک callback دیگر را به عنوان یک آرگومان بپذیرد و زنجیرهای از callbackها را ایجاد کند.
برای جلوگیری از این امر و خوانایی و نگهداری بیشتر کد، Node.js از دستور promises و async/await پشتیبانی میکند. این یک وعدهٔ شیئی است که نشاندهندهد تکمیل یا شکست یک عملیات ناهمزمان است. یک وعده میتواند حل شود (موفقیت) یا رد شود (شکست). میتوانید از روش «.then()» برای رسیدگی به حل یا رد یک وعده استفاده کنید، یا از روش «.catch()» برای رسیدگی به رد کردن استفاده کنید. یک تابع «async» یک وعده را برمیگرداند، و عبارت «wait» اجرای تابع را تا زمانی که وعده حل یا رد شود متوقف میکند.
چگونه از Node.js استفاده کنیم؟
برای استفاده از Node.js، ابتدا باید آن را روی رایانهٔ خود نصب کنید. میتوانید آخرین نسخهٔ Node.js را از وب سایت رسمی آن دانلود کنید. همچنین، میتوانید از ابزار مدیریت نسخه مانند nvm یا nvm-windows برای نصب و جابجایی بین نسخههای مختلف Node.js استفاده کنید.
هنگامی که Node.js را نصب کردید، میتوانید با باز کردن یک ترمینال یا خط فرمان و تایپ کردن، بررسی کنید که کار میکند:
bash
node -v
“`
این باید شمارهٔ نسخهٔ Node.js را که نصب کردهاید نمایش دهد. همچنین میتوانید نسخهٔ npm را بررسی کنید، که مدیریت بستهٔ پیشفرض Node.js است که به شما امکان میدهد ماژولها و وابستگیهای خارجی را برای پروژههای خود نصب و مدیریت کنید. برای بررسی نسخهٔ npm، تایپ کنید:
“`bash
npm -v
“`
برای اجرای یک فایل جاوا اسکریپت با Node.js، باید آن را با پسوند .js ذخیره کنید و سپس تایپ کنید:
“`bash
node filename.js
“`
برای مثال، اگر فایلی به نام «hello.js» دارید که حاوی کد زیر است:
“`javascript
console.log(‘Hello, world!’);
“`
با تایپ کردن موارد زیر، میتوانید آن را با Node.js اجرا کنید:
“`bash
node hello.js
“`
این باید «Hello, world!» را در ترمینال یا خط فرمان شما چاپ کند.
ساختار پروژهٔ Node.js
یک پروژهٔ معمولی Node.js از چندین فایل و پوشه تشکیل شدهاست که به روشی منطقی سازماندهی شدهاند. هیچ راه قطعی یا استانداردی برای ساختار یک پروژهٔ Node.js وجود ندارد، اما برخی از قراردادهای رایج و بهترین روشها وجود دارد که میتوانید آنها را دنبال کنید. در اینجا یک نمونه از ساختار اصلی پروژهٔ Node.js آوردهایم:
“`
project-name/
├── node_modules/ # contains the external modules and dependencies installed by npm
├── public/ # contains the static files that are served
to the client, such as images, stylesheets, scripts, etc.
├── routes/ # contains the files that define the routes or endpoints of the application, such as index.js, users.js, etc.
├── views/ # contains the files that render the dynamic content of the application, such as HTML templates, partials, etc.
├── app.js # the main entry point of the application that initializes and configures the server
├── package.json # contains the metadata and configuration of the project, such as name, version, dependencies, scripts, etc.
└── package-lock.json # contains the exact versions and dependencies tree of the project, generated by npm
البته این تنها راه برای ساختار یک پروژهٔ Node.js نیست و میتوانید آن را با توجه به نیازها و ترجیحات خود تغییر دهید. برای مثال، میتوانید از پوشهها یا نامهای مختلفی برای فایلهای خود استفاده کنید، یا میتوانید از فناوریها یا فریمورکهای مختلف برای نماها یا مسیرهای خود استفاده کنید. نکتهٔ مهم این است که پروژهٔ خود را منظم و منسجم نگه دارید.
چگونه یک وب سرور ساده با Node.js ایجاد کنیم؟
یکی از رایجترین کاربردهای Node.js، ایجاد وب سرورهایی است که میتوانند درخواستها و پاسخهای HTTP را مدیریت کنند. برای ایجاد یک وب سرور ساده با Node.js، باید از ماژول http داخلی استفاده کنید که یک رابط سطح پایین برای کار با پروتکل HTTP فراهم میکند. در اینجا مثالی از نحوهٔ ایجاد یک وب سرور ساده با Node.js با استفاده از ماژول http آوردهایم:
“`javascript
// Import the http module
const http = require(‘http’);
// Create a server object
const server = http.createServer((req, res) => {
// Write a response header
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
// Write a response body
res.write(‘Hello, world!’);
// End the response
res.end();
});
// Listen on port 3000
server.listen(3000, () => {
// Log a message when the server is ready
console.log(‘Server running on port 3000’);
});
“`
برای اجرای این کد، آن را به عنوان «server.js» ذخیره کنید و سپس تایپ کنید:
“`bash
node server.js
“`
این باید سرور را روی پورت 3000 راهاندازی کند و پیامی را در ترمینال یا خط فرمان شما ثبت کند. سپس میتوانید مرورگر وب خود را باز کنید و به “http://localhost:3000” بروید تا پاسخ سرور را ببینید.
کد بالا یک شی سرور را با استفاده از متد http.createServer ایجاد میکند که تابع callback را به عنوان آرگومان میگیرد. تابع callback هر بار که سرور درخواستی از مشتری دریافت میکند، اجرا میشود. تابع callback دو پارامتر دارد: “req” و “res” که به ترتیب اشیاء درخواست و پاسخ را نشان میدهند. شی درخواست حاوی اطلاعاتی در مورد درخواست ورودی است، مانند URL، متد، هدرها، بدنه و غیره. شی پاسخ حاوی متدها و ویژگیهایی است که به شما امکان میدهد پاسخی را به مشتری ارسال کنید، مانند `writeHead()`, «نوشتن()»، «پایان()» و غیره.
کد بالا همچنین از متد «server.listen()» برای وادار کردن سرور به گوش دادن به یک پورت خاص استفاده میکند. شمارهٔ پورت میتواند هر عدد معتبری بین 0 تا 65535 باشد، اما توصیه میشود برای جلوگیری از تداخل با سایر فرآیندهای سیستم، از عددی بالاتر از 1024 استفاده کنید. متد «server.listen()» نیز تابع فراخوانی را به عنوان آرگومان اختیاری دریافت میکند، که زمانی اجرا میشود که سرور آمادهٔ پذیرش درخواستها باشد.
جمعبندی
در این مقاله یاد گرفتیم که Node.js چیست و چگونه کار میکند. همچنین نحوهٔ نصب و استفاده از Node.js، ساختار پروژه Node.js و نحوهٔ ایجاد یک وب سرور ساده با Node.js را یاد گرفتهایم. Node.js یک پلتفرم قدرتمند و همهکاره است که میتواند به شما در ایجاد انواع مختلف برنامهها با استفاده از جاوا اسکریپت کمک کند. اگر میخواهید دربارهٔ Node.js و ویژگیهای آن بیشتر بدانید، میتوانید به وبسایت رسمی آن مراجعه کنید.
اگر سوال یا نظری دارید، در قسمت کامنتها مطرح کنید.
یک فکر در مورد “نودجیاس (Node js) چیست؟ راهنمای کار با نودجیاس”