امروزه جاوا اسکریپت یکی از محبوب ترین زبان های برنامه نویسی در سطح دنیاست که
میلیون ها سایت با استفاده از آن راه اندازی شده اند و یکی از دلایل این محبوبیت امکان استفاده از بستر Node.js است.

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

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

1# Node js چیست؟

در ابتدا زبان برنامه نویسی JavaScript به طور عمده برای اسکریپت نویسی سمت کاربر (Client) طراحی و ساخته شده بود.

به همین دلیل برنامه نویسان وب مجبور به استفاده از زبان های برنامه نویسی دیگر و فریم ورک های واسطه برای برقراری ارتباط بین المان های سمت بک اند (back-end یا همان سرور) و فرانت اند (front-end یا همان کاربر) بودند.

بعد از مدتی Node.js به عنوان راه حل این مشکل معرفی شد که
یک محیط شامل تمام موارد موردنیاز برای اجرای برنامه های نوشته شده با JavaScript است و
به کمک آن هر دو سمت بک اند و فرانت اند با جاوا اسکریپت تولید می شوند.

node js چیست

Node.js یک محیط سمت سرور (Server) متن باز (open-source) و کراس پلتفرم (cross-platform) است؛
به این معنا که از آن می توان در تمام پلتفرم های موجود مثل ویندوز، لینوکس، مک و… استفاده کرد و
کدهای آن به صورت رایگان و آزاد در اختیار کاربران قرار گرفته است.

به بیان دقیق تر نود جی اس یک محیط اجرایی برای جاوا اسکریپت سمت سرور است که
بر روی موتور اجرایی V8 جاوا اسکریپت کار می کند و کدهای JavaScript را بیرون از محیط مرورگر وب اجرا می کند.

همانطور که گفته شد Node js به توسعه دهندگان این اجازه را می دهد که
از JavaScript برای اسکریپت نویسی سمت سرور هم استفاده کنند که
باعث تولید شدن صفحه های وب پویا (دینامیک) پیش از ارسال آن به مرورگر کاربر می شود.

از ویژگی های مهم node.js می توان به معماری رویداد محور (Event-driven) و داشتن I/O ناهمزمان (Asynchronous) اشاره کرد.

2# معماری Node js چیست؟

همانطور که در بخش قبل اشاره شد node.js بر روی موتور V8 کروم اجرا می شود که
کدهای جاوا اسکریپت را به کدهای زبان ماشین تبدیل می کند.

معماری نود جی اس

عملکرد کلی برنامه نود جی اس به این صورت است که درخواست های کاربران را تایید می کند و
سپس پاسخ های مربوط را برای آن ها ارسال می کند.

Node js در زمان کار کردن بر روی درخواست ها از روش مدیریتی تک رشته ای (single thread) استفاده می کند.

رشته یا Thread دنباله ای از دستورالعمل هایی است که سرور نیاز دارد اجرا کند.

این رشته ها به صورت موازی بر روی سرور اجرا می شوند تا اطلاعات موردنیاز چندین کاربر را فراهم کنند.

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

عملکرد کلی node.js بر دو مفهوم اصلی استوار است که برای درک بهتر نحوه کارکرد آن به معرفی این مفاهیم می پردازیم.

  • ناهمزمان (Asynchronous)
  • ورودی/خروجی غیرمسدودکننده (Non-blocking I/O)

1-2# ورودی/خروجی غیرمسدودکننده (Non-blocking I/O)

I/O غیرمسدودکننده به این معنا است که عملکرد سیستم برای چندین درخواست همزمان، بدون مسدود کردن رشته برای یک درخواست انجام می شود.

I/O ها اساسا با سیستم های خارجی مانند فایل ها، دیتابیس ها و… تعامل دارند.

توجه داشته باشید که از Node.js نمی توان برای عملیات های سنگین CPU مثل محاسبات ریاضیاتی و… استفاده کرد؛
زیرا این عملیات ها به صورت تک رشته ای قابل مدیریت کردن نیستند.

2-2# ناهمزمان (Asynchronous)

ناهمزمانی بخش مرتبط با اجرای توابع پاسخ دهنده (callback function) است.

لحظه ای که ما پاسخ سرور دیگر یا دیتابیس را دریافت می کنیم، سیستم ناهمزمان یک تابع پاسخ را اجرا می کند.

توابع پاسخ به محض تمام شدن یک عملیات صدا زده می شوند و
علت این اتفاق استفاده node js از معماری رویداد محور است.

تک رشته موجود با درخواست های ارسال شده کار نمی کند؛ بلکه آن ها را به سیستم دیگری ارسال می کند که
توانایی حل کردن درخواست را دارد و قابل دسترسی برای درخواست های دیگر است.

عملکرد node js برای این سیستم پاسخ دهی بر مبنای مفاهیم موجود در کتابخانه Libuv تعریف می شود.

(Libuv یک کتابخانه متن باز نوشته شده با زبان C است که بر روی سیستم های I/O و asynchronous متمرکز است)

با استفاده از این کتابخانه دو ویژگی مهم در node.js اجرا می شود:

  • Event loop (حلقه رویداد): شامل یک رشته که موظف به مدیریت وظایف ساده مثل اجرای پاسخ ها است.
  • Thread pool (استخر نخ): جایی که تعداد مشخصی از رشته ها در آن قرار گرفته اند.

3# Node js چگونه عمل می کند؟

به بیان ساده عملکرد برنامه نود جی اس مشابه الگوریتم شکل زیر است.

Node js چگونه عمل می کند؟

اگر دو کاربر 1 و 2 (Client 1 , 2) همزمان دو درخواست ارسال کنند، این درخواست ها وارد بخشی به نام صف رویدادها (Event Queue) می شوند.

حلقه رویداد (Event loop) یکی از درخواست های موجود در صف رویدادها را برداشته و آن را بررسی می کند.

در صورتی که این درخواست نیازی به مسدود شدن I/O ها نداشته باشد، پاسخ آن را آماده کرده و برای کاربر ارسال می کند.

اگر این درخواست نیاز به مسدود شدن I/O داشته باشد آن را به یکی از رشته های (Threads) موجود در  Thread pool می سپارد تا
پاسخ آن را آماده کرده و جواب را به حلقه رویداد برگرداند و در نهایت برای کاربر ارسال می شود.

4# ویژگی های Node.js چیست؟

ویژگی های node js چیست

تا به اینجا بررسی کردیم که node js چیست و چطور عمل می کند.

در ادامه قصد داریم به معرفی ویژگی های این برنامه اجرای کد بپردازیم که
باعث محبوبیت و گستردگی کاربرد آن شده اند.

  • سهولت استفاده و یادگیری: یادگیری و شروع کار با node.js بسیار ساده است و مناسب توسعه دهندگان وب مبتدی می باشد.
  • مقیاس پذیری: node.js می تواند تعداد زیادی اتصال همزمان با توان عملیاتی بالا را مدیریت کند.
  • سرعت بالا: به علت استفاده از رشته های غیرمسدودکننده، این سیستم بسیار سریع و کارآمد است.
  • پکیج های متنوع: مجموعه گسترده ای از پکیج های متن باز از نود جی اس در دسترس کاربران آن است.
  • ساختار قوی: Node.js با استفاده از زبان های C و ++C نوشته شده است که
    باعث اضافه شدن خصوصیاتی مثل پشتیبانی از شبکه شده است.
  • چند پلتفرمی بودن: قابلیت استفاده بر روی تمامی پلتفرم ها برای ساخت وب سایت ها، برنامه های ویندوز و حتی موبایل را دارد.
  • قابل نگهداری بودن: یک انتخاب مناسب برای توسعه دهندگان است؛
    زیرا هر دو سمت بک و فرانت یک سایت را با یک زبان جاوا اسکریپت مدیریت می کند.
  • بدون بافر بودن: در برنامه های node js هرگز داده ها بافر نمی شوند.

5# کاربردهای Node js چیست؟

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

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

در ادامه به معرفی برخی از حوزه هایی که می توان در آن ها از node.js استفاده کرد می پردازیم:

  • اپلیکیشن های تک صفحه ای وب (SPA)
  • برنامه های ارتباط و گفتگوی آنلاین (Real-time chats)
  • اینترنت اشیا (IOT)
  • جریان داده ها یا استریمینگ داده (Data streaming)
  • برنامه های مبتنی بر API های JSON وREST
  • پلتفرم های شبکه اجتماعی (Social Media)
  • پردازشگرهای پرداخت آنلاین (Online Payment)
  • ابزارهای اشتراکی از راه دور (Remote Collaboration)
  • ابزارهای مدیریت ارتباط با مشتری (CRM)
  • سیستم های مدیریت محتوا (Content Management System)
  • پلتفرم های آموزش الکترونیکی (E-Learning)
  • پلتفرم تجارت الکترونیک (E-Commerce)
  • ابزارهای مدیریت پروژه (Project Management)
  • برنامه های مبتنی بر لوکیشن (Location-Based)
  • ابزارهای ERP
  • برنامه های دسکتاپ
  • برنامه های بک اند موبایل
  • سرویس های مدیریت سرور (Server Management Services)
  • سرورهای DNS سفارشی
  • توسعه سمت کلاینت و سرور بازی ها

6# معایب Node.js

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

معایب نود جی اس

از جمله معایب اصلی این سیستم می توان به موارد زیر اشاره کرد:

  • کاهش کارایی در زمان مدیریت وظایف بسیار سنگین (Heavy Computing Tasks)
  • داشتن تغییرات بسیار در کدها به علت ناپایداری API آن (Unstable API)
  • عدم پشتیبانی از کتابخانه ها (Lack Of Library Support)
  • وابستگی به برنامه نویس های باتجربه (High demand for experienced resources)
  • دشواری ویرایش کدها به علت مدل اجرایی ناهمزمان (Asynchronous Programming Model)

7# سوالات متداول درباره نود جی اس

در ادامه مقاله node js چیست قصد داریم چند سوال بسیار پرتکرار در این حوزه را پاسخ دهیم.

1-7# آیا Node.js یک فریم ورک است؟

خیر؛ یک نکته بسیار مهم که هرگز نباید فراموش کرد این است که Node.js یک فریم ورک نیست و یک محیط اجرای برنامه است.

2-7# آیا Node.js یک زبان برنامه نویسی است؟

خیر؛ Node js یک پلتفرم یا بستر برای اجرایی شدن برنامه های نوشته شده با زبان برنامه نویسی JavaScript است.

3-7# چه کسانی از Node.js استفاده می کنند؟

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

از جمله معروف ترین سایت هایی که برای ساخت و اجرا از این سیستم استفاده می کنند شامل موارد زیر است:

  • Paypal و eBay
  • LinkedIn
  • Google
  • Netflix
  • Uber
  • Github
  • Medium
  • Trello

سخن پایانی

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

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

در صورتی که تمایل به انتخاب این بستر اجرایی را برای برنامه هایتان دارید، می توانید شروع به یادگیری کنید و
به یکی از برنامه نویسان خبره در این حوزه تبدیل شوید.

دانلود pdf مقاله

مقاله بالا بخشی از مطالب گسترده برنامه نویسی بک اند است.

برای یادگیری صفر تا صد این حوزه به آموزش جامع برنامه نویسی بک اند نماتک مراجعه کنید.

برای مشاهده توضیحات کامل بسته کلیک کنید.

بسته برنامه نویسی بک اند

اگر به دنبال یاد گرفتن مهارت بیشتر و افزایش درآمد هستید،

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

لطفا موبایل خود را وارد نمایید

نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.