شاید شما هم مثل هر فرانت کار دیگه تجربه و دانش کافی کار با JavaScript، Htmlو CSSرا دارید و همیشه بهترین ها را می سازید ولی اگر بخواهید که خودتون سرور برنامتون را راه اندازی کنید، احتمالا پیش خودتون می گین که من باید برم مثلا PHPیاد بگیرم تا بتونم سرور Apacheیا NGinXبرای برنامه خودم بنویسم. ولی دست نگه دارید! چون در این مقاله درباره پلتفرمی به نام NodeJsحرف میزنیم که نه تنها کار سرور های گفته شده را بهتر انجام می دهد بلکه برای نرم افزار های جریان داده ای و بلادرنگ(realtime)بهترین گزینه است.
NodeJs چیست؟
نودجیاس نه یک فریم ورک است و نه یک کتابخانه بلکه یک پلتفرم متن باز بر پایه موتور V8گوگل است که در سال ۲۰۰۹ توسط رایان دال با هدف توسعه سریع و آسان برنامه های مرتبط با شبکه با سرعت، کیفیت و مقیاس پذیری بالا ساخته شده است.
نودجیاس به این دلیل یک پلتفرم است که در هر بستری مانند ویندوز، لینوکس و مک، بدون توجه به نوع مرورگر قابل اجراست. کد های نود به زبان جاوااسکریپت نوشته شده و به جای اجرا کد ها در سمت کلاینت، همگی در سرور برنامه اجرا می شود.
نودچگونه کار می کند؟
همانطور که می دانیم جاوا اسکریپت یک زبان اسکریپت نویسی سمت کلاینت است و این یعنی این که می تواند در مرورگر کاربر اجرا شود. پس نودجیاس اینجا نقش یک واسط را بازی می کند و کد های ما را در سرور برنامه اجرا می کند. این پلتفرم از یک مدل جریان ورودی خروجی رویداد محور استفاده می کند که مسدود نشونده هست. یعنی اینکه به ازای هر درخواست یک رویداد ایجاد شده و به پس زمینه منتقل می شود و سرور آماده دریافت درخواست جدید است. پس از اینکه یک درخواست انجام شد توسط یک تابع callback نتیجه تابع به کاربر بازگردانده می شود. ولی در سرور های متداول مانند PHPو ASP، وقتی شما یک درخواست، مثلا درخواست یک صفحه یا داده یا هرچیزی که به سایت میدهید، سرور ابتدا برای درخواست شما یک ترد(Tread) ایجاد می کند و تا زمانی که شما به جواب درخواست خود نرسیده باشید این ترد بسته نمی شود. این مدل برای سایت ها تا زمانی که کاربر کم داشته باشند و داده زیادی را نخواهد جابهجا کند خیلی خوب عمل می کند ولی فرض کنید در یک لحظه کاربران بسیاری به سایت شما مراجعه کنند و هرکدام درخواست های بسیاری انجام دهند. چه اتفاقی رخ میدهد؟ سرور شما به ازای هر درخواست یک ترد ایجاد کرده و احتمالا منابع آن کمتر از حد مورد نیاز است. ولی تفاوتی که نود را از همه این ها متمایز می کند این است که به ازای هر جریان ورودی و خروجی به صورت یک رویداد مسدود نشونده استفاده می کند و می تواند چندین رویداد را درپس زمینه اجرا کند.
مزایا نود چیست؟
همانطور که گفتیم نود در کنترل منابع در تعداد بالای درخواست بسیار بهتر از بقیه عمل می کند و مهم تر از آن با جاوااسکریپت کار میکند و نیاز به یادگیری زبان دیگری نیست. در سال ۲۰۱۰ فردی به نام ایزاک اسکلوترپکیج منیجر ویژه ای برای نود به نام NPMرا نوشت که با آن می توان بیش از نیم میلیون انواع ماژول های جدید را از طریق محیط ترمینال برای نود دریافت کرد.
4 دلیل برای اینکه Nodejs را باید یاد بگیرید:
1 - Node.js بسیار سریع است :
Node.js از موتور V8 گوگل استفاده میکند . موتور V8 گوگل کدهای جاوااسکریپت را کدهای محلی ماشین کامپایل میکند و با سرعت بسیار بالایی اجرا میشود و به همین خاطر است که Node.js پرسرعت تر از بقیه فریمورک هاست .
Node.js به تیم های برنامه نویسی و شرکت ها ، کمک می کند تا برنامه های سریع و انعطاف پذیر تحت شبکه بسازند که بتوانند اتصالات موازی را با توان بالا انجام دهند .
طبق گزارش شرکت PayPal این شرکت ، بعد از کوچ کردن سیستم هایشان به Node.js مدت زمان پاسخگویی سرویس هایش طی یک ثانیه ، در حالیکه درخواست ها دوبرابر قبل شده بود ، 35% کاهش داشته .
2 - Node.js برنامه نویسان را به اشتراک گذاری کدهایشان ترغیب میکند :
Node.js سعی دارد برنامه نویسان را به NPM یا نود پکیج منیجر نزدیک کند . این مخزن دارای بیش از 50،000 پکیج آماده است که به برنامه نویسان کمک میکند تا کارهای خود را خیلی سریع پیش ببرند .
با استفاده از NPM برنامه نویسان میتوانند کدها را بروزرسانی کنند ، به اشتراک بگذارند یا مجدد استفاده کنند ، بدون اینکه زحمت خاصی بکشند .
3 - با Node.js میتوانید اپلیکیشن های تحت وب RealTime بنویسید که پرفرمنس بالاتری داشته باشد :
Node.js ابزارهای خیلی خوبی دارد تا بتوانید یک اپلیکیشن مثل چت یا بازی انلاین بسازید که بصورت real-time با سرور در ارتباط است .
همچنین Node.js برای برنامه هایی کاربرد دارد که event-based هستند مثل non-blocking driven server ها .
4 - زبان برنامه نویسی یکسان در دو طرف اپلیکیشن های Real-Time ( کلاینت و سرور ) :
توسعه دهندگان Node.js با کدهای جاوا اسکریپت هم سمت سرور و هم سمت کلاینت میتوانند کد نویسی کنند و این امر باعث آسانی مبادله اطلاعات بین کلااینت و سرور میشود .
واحد بودن زبان برنامه نویسی سمت سرور و سمت کلاینت برای یک توسعه دهنده بعنوان یک شتاب دهنده میباشد که از صرف کردن وقت برای یادگیری یک زبان برنامه نویسی دیگر جلوگیری میکند .
تصور کنید فریمورکی را انتخاب کردید که اساس کدنویسی سمت سرور و کلاینتش یکسان است و این خیلی برای راحتی برنامه نویس مهم است که زبان دیگری یاد نگیرد .
نتیجه گیری
نود یک پلتفرم بسیار سریع است که به دلیل داشتن ماژول های متنوع و امکانات زیاد، هر برنامه نویسی، حتی برنامه نویس غییرحرفه ای، می تواند از آن برای ساخت هر نوع برنامه ای در کمترین زمان و با کفیت بالا استفاده کند.