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

شاید شما هم مثل هر فرانت کار دیگه تجربه و دانش کافی کار با JavaScript، Htmlو CSSرا دارید و همیشه بهترین ها را می سازید ولی اگر بخواهید که خودتون سرور برنامتون را راه اندازی کنید، احتمالا پیش خودتون می گین که من باید برم مثلا PHPیاد بگیرم تا بتونم سرور ‌Apacheیا NGinXبرای برنامه خودم بنویسم. ولی دست نگه دارید! چون در این مقاله درباره پلتفرمی به نام NodeJsحرف میزنیم که نه تنها کار سرور های گفته شده را بهتر انجام می دهد بلکه برای نرم افزار های جریان داده ای و بلادرنگ(realtime)بهترین گزینه است.

NodeJsچیست؟

نودجی‌اس نه یک فریم ورک است و نه یک کتابخانه بلکه یک پلتفرم متن باز بر پایه موتور V8گوگل است که در سال ۲۰۰۹ توسط رایان دال با هدف توسعه سریع و آسان برنامه های مرتبط با شبکه با سرعت، کیفیت و مقیاس پذیری بالا ساخته شده است.

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

نودچگونه کار می کند؟

همانطور که می دانیم جاوا اسکریپت یک زبان اسکریپت نویسی سمت کلاینت است و این یعنی این که می تواند در مرورگر کاربر اجرا شود. پس نودجی‌اس اینجا نقش یک واسط را بازی می کند و کد های ما را در سرور برنامه اجرا می کند. این پلتفرم از یک مدل جریان ورودی خروجی رویداد محور استفاده می کند که مسدود نشونده هست. یعنی اینکه به ازای هر درخواست یک رویداد ایجاد شده و به پس زمینه منتقل می شود و سرور آماده دریافت درخواست جدید است. پس از اینکه یک درخواست انجام شد توسط یک تابع callback نتیجه تابع به کاربر بازگردانده می شود. ولی در سرور های متداول مانند PHPو ASP، وقتی شما یک درخواست، مثلا درخواست یک صفحه یا داده یا هرچیزی که به سایت میدهید، سرور ابتدا برای درخواست شما یک ترد(Tread) ایجاد می کند و تا زمانی که شما به جواب درخواست خود نرسیده باشید این ترد بسته نمی شود. این مدل برای سایت ها تا زمانی که کاربر کم داشته باشند و داده زیادی را نخواهد جابه‌جا کند خیلی خوب عمل می کند ولی فرض کنید در یک لحظه کاربران بسیاری به سایت شما مراجعه کنند و هرکدام درخواست های بسیاری انجام دهند. چه اتفاقی رخ میدهد؟ سرور شما به ازای هر درخواست یک ترد ایجاد کرده و احتمالا منابع آن کمتر از حد مورد نیاز است. ولی تفاوتی که نود را از همه این ها متمایز می کند این است که به ازای هر جریان ورودی و خروجی به صورت یک رویداد مسدود نشونده استفاده می کند و می تواند چندین رویداد را درپس زمینه اجرا کند.

مزایا نود چیست؟

همانطور که گفتیم نود در کنترل منابع در تعداد بالای درخواست بسیار بهتر از بقیه عمل می کند و مهم تر از آن با جاوااسکریپت کار میکند و نیاز به یادگیری زبان دیگری نیست. در سال ۲۰۱۰ فردی به نام ایزاک اسکلوترپکیج منیجر ویژه ای برای نود به نام NPMرا نوشت که با آن می توان بیش از نیم میلیون انواع ماژول های جدید را از طریق محیط ترمینال برای نود دریافت کرد.

نود چه معایبی دارد؟

مانند خیلی از برنامه های دیگر نود چون در ابتدای راه خود هست هنوز کامل نشده و ضعف هایی دارد. یکی از بزرگترین ضعف های نود این است که با اینکه شما می توانید از آن در سرور یا VPS خودتون استفاده کنید ولی همچنان امکان استفاده بر روی هاست های اشتراکی وجود ندارد.

نتیجه گیری

نود یک پلتفرم بسیار سریع است که به دلیل داشتن ماژول های متنوع و امکانات زیاد، هر برنامه نویسی، حتی برنامه نویس غییرحرفه ای، می تواند از آن برای ساخت هر نوع برنامه ای در کمترین زمان و با کفیت بالا استفاده کند.

نویسنده: علیرضا حیدری