Node.js چیست؟
Node.js چیست ؟ Node.js در واقع یک محیط اجرایی متنباز سمت سرور به شمار میرود که بر اساس موتور جاوا اسکریپت V8 کروم توسعهیافته است. Node.js یک محیط اجرایی رویداد گرا با قابلیت ورودی و خروجی فایل بهصورت غیر همزمان و همچنین مستقل از پلتفرم را برای ساخت اپلیکیشنهای مقیاسپذیر سمت سرور توسط زبان جاوا اسکریپت فراهم میآورد.
از Node.js میتوان برای ساخت انواع اپلیکیشنها از قبیل برنامههای خط فرمان، تحت وب، برنامه چت فوری، سرورهای Rest API و… استفاده کرد. البته این محیط اغلب برای ساخت برنامههای شبکه مانند سرورهای وب مشابه PHP، Java یا ASP.Net مورداستفاده قرار میگیرد.
مقاله مرتبط: Meteor JS چیست و چه امکاناتی دارد؟
Node.js در سال ۲۰۰۹ توسط Ryan Dahl ساخته شد. برای کسب اطلاعات بیشتر درباره تاریخچه Node.js میتوانید به سایت Wikipedia مراجعه کنید.
وبسایت رسمی Node.js: http://nodejs.org
صفحه گیت هاب Node.js: http://github.com/nodejs/node
کنفرانس جامعه کاربری Node.js: http://nodeconf.com
مزایای Node.js
۱- Node.js یک فریمورک متنباز و تحت لیسانس MIT است (لایسنس MIT یک مجوز برای نرمافزارهای آزاد است که اولین بار توسط انستیتو تحقیقاتی ماساچوست (MIT) ایجاد شد)
۲- از جاوا اسکریپت برای ساخت تمام بخشهای سمت سرور اپلیکیشن استفاده میکند.
۳- یک فریمورک سبک است که کمترین میزان ماژولها را دارد. ماژولهای دیگر بسته به نیاز هر پروژه به آن اضافه میشود.
۴- بهصورت پیشفرض غیر همزمان است، به همین خاطر از فریم ورکهای دیگر سریعتر عمل میکند.
۵- Node.js یک فریم ورک کراس پلتفرم است که میتواند روی سیستمعاملهای ویندوز، لینوکس و مکینتاش نصب شود.
مدل پردازشی Node.js
در این بخش میخواهیم درباره مدل پردازشی Node.js صحبت کنیم و توضیح دهیم که چرا باید از Node.js در پروژههایمان بهره ببریم.
مدل سنتی وب سرور
در مدل سنتی سرور وب هر درخواست توسط یک thread (رشته) از مخزن رشتهها مدیریت میشود. درصورتیکه هیچ رشتهای در مخزن وجود نداشته باشد، درخواست ارسالشده منتظر میماند تا یکی از رشتهها کارش تمام شود. رشتههای اختصاصی یک درخواست را اجرا میکند و تا زمانی که اجرای درخواست به اتمام نرسد و پاسخی به کلاینت ارسال نشود، آن رشته به مخزن برنمیگردد.
مدل پردازش Node.js
درخواستهایی که کاربران به برنامه Node.js ارسال میکنند متفاوت از درخواستهایی که به یک وب سرور سنتی ارسال میشوند، پردازش میشوند. کدهای برنامه Node.js تنها روی یک رشته و در یکروند پردازشی اجرا میشوند؛ درنتیجه منابع کمتری نسبت به فریم ورکهای دیگر موردنیاز خواهد بود. همه درخواستهایی که کاربران به برنامه تحت وب شما ارسال میکنند، تنها توسط یکرشته مدیریت میشود و همچنین همه عملیات ورودی و خروجی (I/O) یا عملیات طولانی که برای درخواستها موردنیاز است، بهصورت غیر همزمان اجرا میشوند. همچنین این رشته در حین انجام یک عملیات، قفل نمیشود و برای درخواستهای بعدی آزاد است. هنگامیکه یک عملیات غیر همزمان I/O کامل شد، درخواست بعدی پردازش میشود و پاسخ آن به کلاینت برگشت داده میشود. Node.js برای حلقه رویدادها از libev که از مخزن رشتههای C++ برای عملیات غیر همزمان I/O بهره میبرد استفاده میکند.
تصویر زیر مدل وب سرور غیر همزمان که توسط Node.js اجرا میشود را نمایش میدهد.
مدل پردازشی Node.js کارایی و مقیاسپذیری را با چند هشدار افزایش میدهد. Node.js برای برنامههایی که فشار زیادی روی CPU وارد میکنند مانند عملیات پردازش تصویر یا برنامههای سنگین دیگر مناسب نیست؛ چراکه این دستورها برای پردازش درخواستها به زمان زیادی نیاز دارند و در طی این مدت رشته را قفل میکنند.