زبان جاوا اسکریپت امکانات بسیاری را در اختیار برنامهنویسان گذاشته است. پلتفرم 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 یک محیط زمان اجرای جاوا اسکریپت بر مبنای موتور V8 کروم است" در گذشته برنامهنویسهایی که کار طراحی سایت را انجام میدادند همواره به دنبال راهی بودند که بتوانند کدها را علاوه بر مرورگر کاربر در سمت سرور هم اجرا کنند. بهاینترتیب دیگر لازم نبود برای برنامهنویسی سمت سرور سراغ زبانهایی مثل PHP بروند. محیط Node.js توانست این امکان را در اختیار توسعه دهندگان وب قرار دهد که کدهای جاوا اسکریپت را سمت سرور اجرا کنند.
زبان جاوا اسکریپت سمت کلاینت است یعنی اینکه روی مرورگر کاربر اجرا میشود. کاری که نود جی اس انجام میدهد این است که نقش یک واسط را اجرا کرده و کدها را سمت سرور برنامه اجرا میکند. در محیط Node.js از مدل جریان ورودی/خروجی رویداد محور غیر مسدودکننده استفاده میشود. به زبان سادهتر، با هر درخواست، یک رویداد ایجاد شده و به پسزمینه منتقل میشود و سرور بعد از آن برای دریافت درخواست جدید آماده است. بعد از اینکه درخواست انجام شد با یک تابع callback نتیجه به کاربر بازگردانده میشود.
در سرورهای متداول مثل PHP وقتی کاربر درخواستی میدهد، سرور برای آن درخواست یک نخ یا Thread ایجاد میکند. این نخ تا زمانی که به جواب نرسیده باشید باز میماند. حال تصور کنید در یکلحظه تعداد زیادی از کاربران به سایت شما مراجعه کرده و درخواستهای بسیاری داشته باشند. در این حالت Threadهای زیادی ایجاد میشود و منابع موجود بهقدری زیاد نیست که پاسخگوی همه باشد. اینجا است که مزیت مدلی که نود جی اس از آن پیروی میکند آشکار میشود.
حالا که کمی با ساختار Node.js آشنا شدیم بهتر است برخی ویژگیهای آن را نیز معرفی کنیم.
نود جی اس از زبان C++ بهره میگیرد و چون در ساختار خود از موتور V8 استفاده کرده سرعت اجرای کدها در آن بسیار بالا است. در کنار این مورد، وجود زبان جاوا اسکریپت کمک میکند تا انتقال فایلهای JSON با سرعت بیشتری انجام شود.
یک پکیج منیجر مناسب در Node.js تحت عنوان npm وجود دارد که به شما این امکان را میدهد تا پکیجهای نوشته شده به زبان جاوا اسکریپت را بهسادگی نصب کنید. امروزه تقریباً تمام پلتفرمها و فریمورکها از npm برای انتشار کدهای خود استفاده میکنند.
پروژههای بسیاری بودهاند که در ابتدا به یک شکل محدود و کوچک آغاز به کار کردند و سپس گسترش یافتند. بزرگشدن پروژهها و افزایش امکانات و سرویسهای یک محصول گاه میتواند دردسرهای زیادی برای توسعه دهندگان ایجاد کند. با کمک میکروسرویسها، یک برنامه به بخشهای کوچکتر تقسیم میشود. سپس هرکدام از این بخشها میتواند توسط تیم متفاوتی توسعه داده شود. نود در زمینه کار با میکروسرویسها بسیار خوب عمل کرده است.
اگر هنوز هم به جزئیات بیشتری در مورد کاربردهای مختلف نود نیاز دارید در این بخش اطلاعات کافی را در اختیار شما قرار خواهیم داد.
عبارت SPA مخفف کلمات Single Page Application یا برنامههای تک صفحهای است. در این سایتها محیط به شکلی طراحی میشود که هنگام انتقال از یک URL به URL دیگر صفحه رفرش نمیشود. به این ترتیب کاربران حین کار با سایت این حس را دارند که یک برنامه روی موبایل یا کامپیوتر خود نصب کردهاند. بیشتر در ساخت شبکههای اجتماعی و سرویسهای ایمیل از این تکنولوژی استفاده میشود. معروف ترین سایتی که SPA را به کار گرفته YouTube است. نود به شما این امکان را میدهد که کار طراحی سایت را بهصورت SPA انجام دهید.
یکی دیگر از قابلیتهای Node.js این است که توانایی ساخت Real Time Apps را دارد. برنامههای لحظهای یا RTA در دنیای امروز از اهمیت بالایی برخوردار هستند. حتی اگر یک کاربر معمولی باشید بدون شک از چنین برنامه هایی استفاده کردهاید. در این نوع برنامه ها نتیجه باید به صورت بلادرنگ و فوری برای کاربران نمایش داده شود. اپ های مربوط به مدیریت پروژه، کنفرانس ویدیویی و صوتی، چت رومها، پیامرسانها و بازیهای کامپیوتری آنلاین همگی در دسته RTA قرار میگیرند.
برنامهنویسی تحت وب دیگر محدودیتهای سابق را ندارد و میتوان با کمک ابزارهای موجود در آن کارهای متفاوتی انجام داد. بازیهای کامپیوتری تحت وب هم یکی از آنها است. وقتی تکنولوژیهای HTML5 با ابزارهای جاوا اسکریپت و Node.js ترکیب شوند می توان به سادگی بازی های کامپیوتری نیز ساخت.
این موارد تنها بخشهای کوچکی از کاربردهای نود جی اس بودند که شرح داده شد. این پلتفرم اما تازه در ابتدای مسیر پیشرفت است. مشخص نیست در بهروزرسانیهای آینده چه قابلیتهای شگفتانگیز دیگری به آن اضافه شود. شما همواره میتوانید با مراجعه به سایت رسمی Node.js از آخرین تغییرات به وجود آمده در این پلتفرم آگاهی پیدا کرده و نسخههای جدید را در صورت نیاز دانلود کنید.