Node.js یک پلتفرم برنامه نویسی سرور-ساید است بر پایه موتور جاوا اسکریپت مرورگر کروم ایجاد شده است. این پلتفرم توسط رایان داهل در سال ۲۰۰۹ ایجاد شده است و در حال حاضر آخرین نسخه آن ورژن 0.10.36 میباشد.
Node.JS چیست؟
بر اساس اعلان مستندات رسمی تعریف Node.Js به بصورت زیر تعریف میشود:
“Node.js یک پلتفرم ایجاد شده بر پایه موتور جاوا اسکریپت گوگل کروم است که باعث سهولت ایجاد و مقیاسپذیری برنامههای تحت شبکه میشود. این پلتفرم از یک مدل I/O رویداد محور استفاده میکند که مسدود نشونده (non-blocking) است و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی میشود و این امر برای اجرای برنامههای مبتنی بر داده که بصورت بلادرنگ (Real-Time) بر روی سرورهای نامتمرکز استفاده میشوند بسیار مناسب است.”
در اصل، Node.JS یک مترجم کد جاوا اسکریپت است که روی سرور قرار می گیرد و بسیار سریع و انعطاف پذیر است. می توانیم، به روش مشابه که شما در front-end از جاوا اسکریپت استفاده می کنید آنرا بصورت back-end را هم استفاده کنید. البته در سرور نمی توانید المان های HTML را مدیریت کنید. با Node.JS می توانید تمام کارهایی که C# یا PHP انجام می دهند را با جاوااسکریپت انجام دهید.
بسیاری از مردم فکر می کنند که Node.js مانند IIS و Apacheفقط برای وب می باشد. در IIS یا Apache بعد از نصب آنها، شما یک صفحه آماده و در دسترس دارید اما در حال حاضر این در Node.js متفاوت است. در Node.JS این شما هستید که وب سرور یا دیگر موارد مورد علاقه خود را ایجاد می کنید. تفاوت دیگر این است که سرورهای سنتی قوی تر ولی پیچیده تر هستند و بیشتر از ماشین استفاده می کنند. با Node.js می توانیم بگوییم که این عمل بسیار ساده است و در عین حال بسیار امن و سریع می باشد.
Node.js یک پلتفرم کد باز برای گسترش برنامههای سمت سرور و تحت شبکه میباشد. این پلتفرم بر اساس زبان جاوا اسکریپت نوشته شده است و قابلیت پیادهسازی بر روی سیستمعاملهای ویندوز، لینوکس و سیستم عامل کامپیوترهای اپل را دارد.
Node.js کتابخانهای بزرگ از ماژولهای مختلف جاوا اسکریپت را فراهم میکند که توسعه برنامه های کاربردی تحت وب را تا حدود زیادی راحت تر می کند.
ویژگیهای Node.JS
در زیر برخی از مهمترین ویژگیهای این پلتفرم که باعث میشود انتخاب اول برنامهنویسها باشد ذکر شده است:
غیرهمزمانی و رویداد محوری
همهی API های کتابخانه Node.js غیرهمزمان میباشند که همین امر باعث مسدودناپذیری (non-blocking) آن میشود. این این معنی است که که Node.js در بستر سرویس دهنده، هیچگاه در انتظار بازگشت اطلاعات از API نمیماند. سرور پس از صدا زدن یک API به سمت API بعدی حرکت میکند و برای اطلاع از وضعیت API قبلی از مکانیزم ثبت رویداد استفاده میکند.
سرعت بالا
با توجه به این که نود جی اس بر پایه نسخه ۸ موتور جاوا اسکریپت گوگل کروم پیادهسازی شده است در اجرای کدها بسیار سریع عمل میکند.
تک موضوع اما بسیار مقیاس پدیر
نود جی اس از یک مدل تک موضوعی به همراه حلقه رویدادها استفاده میکند. مکانیزم رویداد باعث میشود که سرور به صورت مسدود نشونده پاسخها را ارسال کند و همین امر باعث میشود بر خلاف مکانیزمهای سنتی که سرور را محدود به چند درخواست برای پردازش درخواستها میکرد سرور بسیار مقیایسپذیر شود.
نود جی اس از یک برنامه تک موضوعی استفاده میکند و همان برنامه میتواند سرویسی برای تعداد بسیار بیشتری از درخواست ها نسبت به مکانیزم های قدیمی سرور مثل HTTP سرور آپاچی فراهم کند.
عدم وجود بافرینگ
این پلتفرم هیچ دادهای را بافر نمیکند و دادههای خروجی را به صورت تکهتکه منتشر میکند.
چه کسانی از Node.js استفاده میکنند؟
جامعه بزرگی از مصرفکنندگان Node.js میتواند یک عامل مهم در انتخاب این پلتفرم باشد. شرکتهای بزرگی همچون Yahoo ،Microsoft ،Paypal ،eBay و … که از Node.js استفاده میکنند و میتواند ملاکی برای اعتبار این پلتفرم بهحساب آورد.
پلتفرم Node.js خودش صاحب یک وب سرور است لذا اگر شما از یک وب سرور استفاده میکنید، Node.js از آن استفاده نمیکند، چون خودش دارد و برای اینکه برنامه شما را اجرایی کند از طریق خطوط دستوری به نام Command Line استفاده میکند.
Command Line درواقع یک راه تعاملی برای برقراری ارتباط با سرور است و همانطور که از اسمش هم پیداست، زمانی که میخواهیم سرور کاری را برای ما انجام دهد میتوانیم به صورت نوشتن یک سری دستورات مشخص و تعیین شده این کار را انجام دهیم که طبعا سرعت بالاتری را هم در آخر نصیب ما خواهد کرد.
نمودار زیر مهمترین بخشهای Node.js را را نشان می دهد:
در زیر برخی از موقعیتهایی که نود جی اس خودش را به عنوان یک پلتفرم کارا معرفی میکند آمده است:
– نرمافزارهای محدوده I/O (ورودی و خروجی)
– نرمافزارهای جریان دادهای (Data Streaing)
– دادههای نرمافزارهای بلادرنگ (Real-Time)
– برنامههای مبتنی بر JASON API
– برنامههای تک صفحهای