پلتفرم Node.js

زبان جاوا اسکریپت امکانات بسیاری را در اختیار برنامه‌نویسان گذاشته است. پلتفرم Node.js هم یکی از آنها است. اسکریپت‌نویسی سمت سرور یکی از نیازهای اساسی برای برنامه‌نویس‌ها بود که Node.js توانست امکان آن را فراهم کند. در این مقاله می‌خواهیم نگاهی کلی به این پلتفرم داشته باشیم و از زوایای مختلف به بررسی آن بپردازیم. پس تا پایان همراه ما باشید!

شروع به کار Node.js

پلتفرم Node.js

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

کار توسعه و نگهداری Node.js در ابتدا توسط خود رایان دال انجام می‌شد اما بعدها شرکت جوی نت (Joynet) از آن حمایت کرد. در سال 2011 مایکروسافت و جوی نت با همکاری یکدیگر نسخه بومی Node.js را برای ویندوز پیاده سازی کردند. سال 2012 رایان دال از مدیریت این پروژه کناره­گیری کرد و کارها را به همکاران خود سپرد. سال 2014 انشعابی از نود ­جی ­اس با نام IO.js نیز به وجود آمد. اختلافات داخلی در بین اعضای تیم توسعه دهنده همچنین باعث شد تا بعضی از آنها IO.js را به عنوان یک پروژه جایگزین برای نود جی اس در نظر بگیرند.

با تشکیل بنیاد نود جی اس در سال 2015 اعضای تیم هر دو پروژه رضایت دادند که IO.js و Node.js با یکدیگر ادغام شوند. پس از آن دیگر نسخه جدیدی برای IO.js منتشر نشد. در حال حاضر آخرین نسخه پایدار پلتفرم Node.js شماره 16.11.1 است. این نسخه در تاریخ 12 اکتبر 2021 به انتشار عمومی رسید.

ساختار پلتفرم Node.js

Node.js

نود جی اس در حقیقت نه یک فریم‌ورک و نه یک کتابخانه است. وب سایت رسمی Node.js تعریف رسمی خود را این‌چنین ارائه می‌دهد: "Node.js یک محیط زمان اجرای جاوا اسکریپت بر مبنای موتور V8 کروم است" در گذشته برنامه‌نویس‌هایی که کار طراحی سایت را انجام می‌دادند همواره به دنبال راهی بودند که بتوانند کدها را علاوه بر مرورگر کاربر در سمت سرور هم اجرا کنند. به‌این‌ترتیب دیگر لازم نبود برای برنامه‌نویسی سمت سرور سراغ زبان‌هایی مثل PHP بروند. محیط Node.js توانست این امکان را در اختیار توسعه دهندگان وب قرار دهد که کدهای جاوا اسکریپت را سمت سرور اجرا کنند.

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

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

دلایل محبوبیت محیط Node.js

حالا که کمی با ساختار Node.js آشنا شدیم بهتر است برخی ویژگی‌های آن را نیز معرفی کنیم.

سرعت بالای Node.js

نود جی اس از زبان C++ بهره می­گیرد و چون در ساختار خود از موتور V8 استفاده کرده سرعت اجرای کدها در آن بسیار بالا است. در کنار این مورد، وجود زبان جاوا اسکریپت کمک می­کند تا انتقال فایل‌های JSON با سرعت بیشتری انجام شود.

مدیریت مناسب پکیج ها

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

میکروسرویس ها

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

کاربردهای پلتفرم Node.js

نود جی اس

اگر هنوز هم به جزئیات بیشتری در مورد کاربردهای مختلف نود نیاز دارید در این بخش اطلاعات کافی را در اختیار شما قرار خواهیم داد.

SPA

عبارت SPA مخفف کلمات Single Page Application یا برنامه­های تک صفحه­ای است. در این سایت­ها محیط به شکلی طراحی می­شود که هنگام انتقال از یک URL به URL دیگر صفحه رفرش نمی­شود. به این ترتیب کاربران حین کار با سایت این حس را دارند که یک برنامه روی موبایل یا کامپیوتر خود نصب کرده­اند. بیشتر در ساخت شبکه­های اجتماعی و سرویس­های ایمیل از این تکنولوژی استفاده می­شود. معروف ترین سایتی که SPA را به کار گرفته YouTube است. نود به شما این امکان را می­دهد که کار طراحی سایت را به­صورت SPA انجام دهید.

Real Time App

یکی دیگر از قابلیت­های Node.js این است که توانایی ساخت Real Time Apps را دارد. برنامه­های لحظه­ای یا RTA در دنیای امروز از اهمیت بالایی برخوردار هستند. حتی اگر یک کاربر معمولی باشید بدون شک از چنین برنامه هایی استفاده کرده­اید. در این نوع برنامه ها نتیجه باید به صورت بلادرنگ و فوری برای کاربران نمایش داده شود. اپ های مربوط به مدیریت پروژه، کنفرانس ویدیویی و صوتی، چت روم­ها، پیامرسان­ها و بازی­های کامپیوتری آنلاین همگی در دسته RTA قرار می­گیرند.

بازی های کامپیوتری تحت وب

برنامه‌نویسی تحت وب دیگر محدودیت‌های سابق را ندارد و می‌توان با کمک ابزارهای موجود در آن کارهای متفاوتی انجام داد. بازی‌های کامپیوتری تحت وب هم یکی از آنها است. وقتی تکنولوژی‌های HTML5 با ابزارهای جاوا اسکریپت و Node.js ترکیب شوند می توان به سادگی بازی های کامپیوتری نیز ساخت.

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