Nodejs چگونه کار می‌کند

خلاصه
1404/05/19

Node.js یک محیط اجرایی متن‌باز، چند پلتفرمی و سمت سرور است که به شما اجازه می‌دهد کدهای جاوااسکریپت را خارج از مرورگر وب اجرا کنید. به زبان ساده، Node.js به جاوااسکریپت اجازه م

Nodejs چگونه کار می‌کند

Node.js یک محیط اجرایی متن‌باز، چند پلتفرمی و سمت سرور است که به شما اجازه می‌دهد کدهای جاوااسکریپت را خارج از مرورگر وب اجرا کنید. به زبان ساده، Node.js به جاوااسکریپت اجازه می‌دهد تا به عنوان یک زبان backend برای توسعه سرورها و برنامه‌های کاربردی تحت شبکه استفاده شود.

**اجزای اصلی Node.js و نحوه کارکرد آن:**

1. **موتور JavaScript V8:**
* Node.js از موتور V8 استفاده می‌کند که توسط گوگل برای مرورگر Chrome توسعه داده شده است. این موتور، کدهای جاوااسکریپت را به کد ماشین (machine code) تبدیل می‌کند که مستقیماً توسط پردازنده قابل اجرا است.
* V8 با استفاده از تکنیک‌های کامپایل بهینه و JIT (Just-In-Time) Compilation، عملکرد بسیار بالایی را در اجرای جاوااسکریپت فراهم می‌کند.

2. **حلقه رویداد (Event Loop):**
* Node.js از یک مدل غیرهمزمان (asynchronous) و مبتنی بر رویداد (event-driven) استفاده می‌کند. این بدان معناست که به جای مسدود کردن فرآیند اصلی (main thread) در هنگام انجام عملیات ورودی/خروجی (I/O) مانند خواندن از دیسک، نوشتن در پایگاه داده یا برقراری ارتباط با یک API، Node.js این عملیات را به صورت غیرهمزمان انجام می‌دهد.
* حلقه رویداد مسئول مدیریت رویدادها و پاسخگویی به آن‌ها است. وقتی یک عملیات I/O شروع می‌شود، Node.js آن را به سیستم عامل (OS) می‌سپارد و به کار خود ادامه می‌دهد. هنگامی که عملیات I/O به پایان می‌رسد، سیستم عامل یک رویداد تولید می‌کند و حلقه رویداد آن را دریافت می‌کند. سپس، حلقه رویداد تابع callback مربوط به آن رویداد را اجرا می‌کند.
* این مدل غیرهمزمان به Node.js اجازه می‌دهد تا تعداد زیادی درخواست همزمان را به طور کارآمد مدیریت کند، بدون اینکه عملکرد آن به شدت کاهش یابد.

3. **کتابخانه libuv:**
* libuv یک کتابخانه C است که لایه‌ای از انتزاع را برای عملیات I/O غیرهمزمان در سیستم‌های عامل مختلف فراهم می‌کند.
* این کتابخانه به Node.js اجازه می‌دهد تا به طور یکنواخت با سیستم‌ عامل‌های مختلف تعامل داشته باشد و عملیات I/O را به صورت غیرهمزمان انجام دهد.

4. **مدیریت بسته npm (Node Package Manager):**
* npm یک سیستم مدیریت بسته برای Node.js است. این به شما اجازه می‌دهد تا به راحتی کتابخانه‌ها و ابزارهای شخص ثالث را نصب، مدیریت و استفاده کنید.
* npm دارای یک مخزن بزرگ از بسته‌های مختلف است که توسط جامعه توسعه‌دهندگان Node.js ایجاد شده‌اند.

**خلاصه نحوه کارکرد:**

1. **دریافت درخواست:** Node.js یک درخواست از مشتری (مانند مرورگر) دریافت می‌کند.
2. **پردازش درخواست:** Node.js درخواست را پردازش می‌کند. اگر نیاز به انجام عملیات I/O باشد (مانند خواندن از دیسک یا پایگاه داده)، Node.js آن را به صورت غیرهمزمان به سیستم عامل می‌سپارد.
3. **انجام عملیات I/O:** سیستم عامل عملیات I/O را انجام می‌دهد.
4. **تولید رویداد:** پس از اتمام عملیات I/O، سیستم عامل یک رویداد تولید