Node.js پلتفرمی است بر مبنای موتور جاوا اسکریپت کروم که به منظور ایجاد برنامههای سریع و گسترشپذیر به وجود آمده است. Node.js از مدل رویدادگرا و non-blocking برای انجام عملیات I/O بهره میبرد. از این رو Node.js یک پلتفرم سبک و کارا برای پیادهسازی برنامههای Real-time و مبتنی بر داده است که میتوانند به راحتی در سرورهای نامتمرکز اجرا شوند.
هدف نود جی اس، بدست دادن راهی ساده برای ساخت برنامههای قابل گسترشِ تحت شبکه است. نود جی اس ( از طریق epoll، kqueue، /dev/poll، یا select ) به سیستم عامل فرمان میدهد که هر زمان کانکشن جدیدی ایجاد شد، وی را باخبر سازد. سپس به حالت sleep میرود. اگر اتصال جدیدی برقرار شد، سیستم عامل callback را صدا میزند. هر کانکشن در واقع تنها یک اختصاص دهی کوچکِ Heap است.
این روش با مدلهای همزمانی (concurrency) کنونی که در آن از Threadهای سیستم عامل استفاده میشود متفاوت است. برنامههای تحت شبکه که بر پایه Threadها ایجاد میشوند ناکارآمد و برای استفاده، پیچیدهاند. نود جی اس در استفاده بهینه از حافظه تحت فشارهای بالا نسبت به سیستمهایی که برای هر کانکشن ۲ مگابایت thread stack اختصاص میدهند، بسیار بهتر عمل میکند. گذشته از این، کاربرانِ نود جی اس دیگر نگرانی در مورد dead-lockها ندارند. هیچ قفلی وجود ندارد. بعلاوه هیچ دستوری در نود جی اس مستقیماً کار I/O را انجام نمیدهد، بنابراین پردازه هیچگاه بلاک نمیشود. و چون هیچ چیزی بلاک نمیشود؛ برنامه نویسان غیر حرفهای هم میتوانند سیستمهای پرسرعتی بنویسند.
نود جی اس در طراحی تحت تأثیر و بسیار شبیه سیستمهایی نظیر Event Machine رابی و یا Twisted پایتون (Python) است. نود جی اس مدل رویدادگرا را کمی جلوتر میبرد. در نود جی اس چرخهی رویداد به عنوان یک کتابخانه جدا از زبان نیست، بلکه با زبان گره خرده است. در سیستمهای دیگر یک blocking call برای شروع چرخه رویداد وجود دارد. متد رایج این است که callbackهای مورد نیاز در شروع اسکریپت نوشته میشوند و در پایان سرور از طریق اجرای یک متدِ بلاک کننده یا Blocking Call شروع به کار میکند.
در نود جی اس HTTP یک پروتکل ممتاز است. این کتابخانه براساس تجربیات نویسنده آن در توسعه برنامههای تحت شبکه و وب سرورها ایجاد شده است. برای مثال data streaming در اکثر frameworkها کاری غیر ممکن است. نود جی اس سعی کرده است که این مشکلات را در پارسر HTTP خود و APIهای مربوط به آن حل کند. این ویژگی به همراه ساختار رویدادگرای نود جی اس، میتواند مبنایی برای بهترین کتابخانهها و Frameworkهای تحت وب باشد.