باعتبارها وقت تشغيل JavaScript غير متزامن يحركه الحدث ، تم تصميم Node لبناء تطبيقات شبكة قابلة للتطوير. في مثال “عالم الترحيب” التالي ، يمكن معالجة العديد من الاتصالات بشكل متزامن. عند كل اتصال ، يتم تشغيل رد الاتصال ، ولكن إذا لم يكن هناك عمل يتعين القيام به ، فسوف تنام العقدة 64 بت .
هذا على عكس نموذج التزامن الأكثر شيوعًا اليوم حيث يتم استخدام مؤشرات ترابط نظام التشغيل. تعتبر الشبكات القائمة على الخيط غير فعالة نسبيًا ويصعب استخدامها بشدة. علاوة على ذلك ، فإن مستخدمي Nodejsخالية من المخاوف من إغلاق العملية ، حيث لا توجد أقفال. لا تقوم أي وظيفة تقريبًا في التطبيق بإجراء عمليات الإدخال / الإخراج مباشرةً ، لذا لا يتم حظر العملية مطلقًا. نظرًا لعدم وجود أي حظر ، فإن الأنظمة القابلة للتطوير معقولة جدًا لتطويرها في Node.
يشبه Node.js في التصميم أنظمة مثل Ruby’s Event Machine أو Python وتتأثر بهاملتوية. يأخذ نموذج الحدث إلى أبعد من ذلك. يقدم حلقة حدث كإنشاء وقت تشغيل بدلاً من مكتبة. في الأنظمة الأخرى ، هناك دائمًا استدعاء حظر لبدء حلقة الحدث. عادةً ما يتم تحديد السلوك من خلال عمليات الاسترجاعات في بداية البرنامج النصي وفي النهاية يبدأ الخادم من خلال استدعاء حظر مثل EventMachine :: run (). في Node js ، لا توجد مثل هذه المكالمة لبدء حلقة الحدث. إنه يدخل ببساطة في حلقة الحدث بعد تنفيذ نص الإدخال. الأداة تخرج من حلقة الحدث عندما لا يكون هناك المزيد من عمليات الاسترجاعات للقيام بها. هذا السلوك يشبه متصفح JavaScript – تكون حلقة الحدث مخفية عن المستخدم.
HTTP هو مواطن من الدرجة الأولى في Nodejs ، تم تصميمه مع وضع البث ووقت الاستجابة المنخفض في الاعتبار. هذا يجعل Node js مناسبًا تمامًا لتأسيس مكتبة ويب أو إطار عمل.
فقط لأنتم تصميم Nodejs بدون خيوط ، لا يعني أنه لا يمكنك الاستفادة من النوى المتعددة في بيئتك. يمكن إنتاج العمليات الفرعية باستخدام child_process.fork () API ، وهي مصممة بحيث يسهل التواصل معها. بنيت على نفس الواجهة هي وحدة الكتلة ، والتي تسمح لك بمشاركة المقابس بين العمليات لتمكين موازنة الحمل على النوى.