Node.js چیست و چرا باید از آن استفاده کرد ؟

تاریخچه جاوا اسکریپت:

در سال ۱۹۹۵، یکی از پیمان‌کاران شرکت Netscape به‌نام برندن ایچ زبان جاوا اسکریپت را ساخت تا در مرورگرهای وب اجرا شود. جاوا اسکریپت در ابتدا به‌منظور اضافه کردن قابلیت انیمیشن و سایر تغییرات Document Object Model در مرورگر ایجاد شد. بعد از مدت کوتاهی یک نسخه از جاوا اسکریپت برای Netscape Enterprise Server معرفی شد.

نام جاوا اسکریپت به‌منظور توجه بازار به آن انتخاب شد، زیرا در آن زمان زبان جاوای شرکت سان از معروفیت خاصی برخوردار بود. در واقع، زبان جاوا اسکریپت در وهله اول بر پایه طرح و ساختار مستقل بنا شده است که از لحاظ ظاهری شبیه به دستور زبان جاوا است.

در ابتدا، خیلی از برنامه‌نویسان بر این اعتقاد بودند که جاوا اسکریپت در دنیای واقعی‌ بی‎فایده است، زیرا مفسر آن کندتر از زبان‎های کامپایل شده اجرا می‎شد. اما این موضوع با تلاش‎های بسیار و تحقیقات زیاد یک جاوا اسکریپت سریع‎تر را به وجود آورد. از همه برجسته‎تر، موتور منبع باز Google Chrome V8 JavaScript است که با کامپایل هم‌زمان و بهینه‌سازی کدهای دینامیک می‎تواند در بعضی شرایط از کدهای C++ بهتر عمل کند و در اغلب موارد از پایتون برتر است. سکوی Node.js مبتنی بر جاوا اسکریپت در سال ۲۰۰۹ توسط رایان دال برای لینوکس و مک او اس و به‌عنوان یک جایگزین مقیاس‌پذیرتر نسبت به Apache HTTP Server معرفی شد. NPM نوشته شده توسط ایزاک اسکلوتر در سال ۲۰۱۰ منتشر شد. نسخه ویندوز Node.js در سال ۲۰۱۱ شروع به کار کرد. Joyent برای چند سال مالکیت، اداره و پشتیبانی از توسعه Node.js را بر عهده داشت. از سال ۲۰۱۵ پروژه Node.js به Node.js Foundation واگذار شد که تحت کنترل کمیته فنی این بنیاد قرار دارد. Node.js به‌عنوان یک پروژه همکاری با بنیاد لینوکس هم پذیرفته شده است.

 کاربردهای Node صرفاً محدود به جاوا اسکریپت نمی‎شود. شما می‎توانید از هر زبانی که به جاوا اسکریپت ترنسپایل می‎شود (مثل TypeScript و CoffeeScript) نیز استفاده کنید.

Node.js چیست؟

Node.js یک پلتفرم کدنویسی سمت سرور است و یک چهارچوب نرم افزاری I/O بر پایه موتور جاوا اسکریپت V8 می باشد.

این پلتفرم با زبان های C ، C++ و جاوا اسکریپت نوشته شده است و در تمامی سیستم عامل ها مانند انواع لینوکس ، ویندوز، مکینتاش ، سولاریس و … قابل اجرا و بهره برداری است.

موتور جاوا اسکریپت V8 در اصل همان موتور اجرای گوگل کروم می باشد که به صورت متن باز در اختیار توسعه دهندگان قرار گرفته است.

این پلتفرم از یک مدل I/O بر اساس Event است که قابلیت Non-Blocking آن باعث کاهش فشار موجود بر روی سرور و افزایش کارایی می گردد. عموما Node.js را به عنوان پلتفرمی برای گسترش برنامه های سمت سرور و شبکه به کار می برند که با توجه به قابلیت ذکر شده باعث اجرای Real-time برنامه های تحت شبکه می شود.

Node.js ویژگی های خاصی دارد که باعث شده از محبوبیت خاصی برخوردار گردد.

خصوصیات و ویژگی های Node.js :

* API های غیر همزمانی و رویداد محور

تمامی API های Node.js در بستر شبکه و سرور هیچگاه در انتظار برگشت اطلاعات آن API نبوده و بلافاصله به سراغ API بعدی می رود و همین امر باعث می گردد که هیچگاه درنگی در انجام امور نباشد و برای بدست آوردن وضعیت بازگشت و اطلاعات مورد نیاز برگشتی Node.js از الگوریتم Event استفاده می کند.

* عدم ذخیره و با فرینگ داده ها

این پلتفرم داده های خروجی را به صورت پکت های متوالی و بدون وقفه منتشر کرده و هیچ داده ای را بافر و یا ذخیره نمی کند.

* تک موضوع اما مقیاس پذیر

Node.js از یک مدل تک موضوعی برای سرویس دهی استفاده می کند به طوری که Event ها در یک حلقه قرار می گیرند و همین نحوه عملکرد باعث می شود هیچ وقت سرویس گیرنده بدون جواب نماند. این در حالی است که اکثر پلتفرم های سرویس دهنده درخواست هایشان بصورت محدود می باشند.

Node.js امروزه به پلتفرمی تبدیل شده که اکثر برنامه نویسان و همچنین شرکت های قدرتمند برای برخی سرویس های خود از آن استفاده می کنند.

پس از کمی جستجو در اینترنت متوجه می شوید که نام های بزرگی مانند eBay، Yahoo، PayPal، Microsoft، Go daddy و … دربین مصرف کنندگان این پلتفرم هستند و البته سرویس های مهمی را توسط Node.js توسعه داده اند.

سیستم چند سکویی

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

کارکردهای جانبی

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

نرم‌افزارهای بر پایه‌ی Node.js

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

Node Package Manager

Node.js برای مدیریت وابستگی‌ها، یک ابزار کمکی به نام npm در اختیار برنامه‌نویسان قرار می‌دهد. npm کار مدیریت نسخه و دانلود و راه‌اندازی وابستگی‌ها را بسیار آسان می‌کند. برای مثال ممکن است شما برنامه‌ای ایجاد کنید که برای اجرا به چندین کتابخانه‌ی جانبی نیازمند است. کافی است نام و نگارش مورد نیاز از این کتابخانه‌ها را در فایلی با نام package.json ثبت کنید و سپس از npm بخواهید تا فایل‌های لازم را از اینترنت دانلود و در کنار فایل‌های اصلی پروژه جاسازی کند.

سرعت

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

یادگیری Node.js

همان گونه که گفته شد، Node.js بر پایه‌ی زبان جاوااسکریپت فعالیت می‌کند. بنابراین پیش از شروع به کار با Node.js می‌بایست اصول برنامه‌نویسی Javascript را فراگیری کنید. پس از کسب مهارت در جاوا اسکریپت، شروع به کار با Node.js بسیار آسان خواهد بود. یادگیری استفاده از ابزارهای Node.js از جمله npm، کتابخانه‌های داخلی( مانند کتابخانه‌ی فایلی ) و کتابخانه‌های خارجی مورد نیاز در مرحله‌ی بعد قرار دارند.

Node.js چگونه می‌تواند به ما کمک کند؟

برنامه‌نویسان زبان‌های مختلف و به طور ویژه برنامه‌نویسان وب مشتریان اصلی این پلتفرم هستند. کتابخانه‌های فراوان و متنوع و ابزارهای کمکی ایجاد شده برای Node.js به شما کمک می‌کنند، زمان کمتری را صرف کنید و نتایج بهتری را کسب کنید.nodejs-new-pantone-black