الإعتمادات
هناك العديد من الإعتمادات التي يعتمد عليها Node.js ليقوم بعمله على ما يرام.
المكتبات
V8
تزود مكتبة V8 Node.js بمحرك جافاسكريبت ،الذي يتحكم به Node.js عبر واجهة برمجة التطبيقات V8 C++. يتم الإشراف على V8 بواسطة غوغل ، للاستخدام في متصفح كروم.
libuv
إعتمادية مهمة الأخرى هي libuv ، وهي مكتبة C تُستخدم لتجريد عمليات الإدخال / الإخراج غير المحظورة إلى واجهة متناسقة عبر جميع الأنظمة الأساسية المدعومة. إنه يوفر آليات لمعالجة ملفات النظام ، DNS ، الشبكة ، العمليات الفرعية ، التصفية ، معالجة الإشارات ، الاقتراع والتدفق. يتضمن أيضًا تجمع مؤشرات ترابط لإلغاء تحميل العمل لبعض الأشياء التي لا يمكن القيام بها بشكل غير متزامن على مستوى نظام التشغيل.
llhttp
تتم معالجة تحليلات بروتوكول الـ HTTP بواسطة مكتبة C خفيفة الوزن تسمى llhttp. تم تصميمه بحيث لا يقوم بإجراء أي نداءات نظام (syscalls) أو عمليات تخصيص ( allocations ) ، لذلك لا يأخذ الطلب سوى مساحة صغيرة جدا من الذاكرة.
c-ares
بالنسبة لبعض طلبات الـ DNS الغير متزامنة ، يستخدم الـ Node.js مكتبة C تسمى c-ares. يتم كشفها من خلال وحدة DNS في جافا سكريبت كأنها عائلة من دوال الحلول ( resolve()
) حيث تستخدم الدالة lookup ()
، وهي ما تستخدمه بقية النواة ، المكالمات المترابطة getaddrinfo(3)
في libuv. والسبب في ذلك هو أن c-ares تدعم / etc / hosts ، و /etc/resolv.conf و /etc/svc.conf ، ولكن لا تفعل مع غيرها مثل mDNS.
OpenSSL
يستخدم OpenSSL على نطاق واسع في كل من الوحدات النمطية tls
و crypto
.توفر العديد من وظائف التشفير التي تم اختبارها واقعيا من أجل الأمان.
zlib
من أجل الضغط السريع وإلغاء الضغط ، تعتمد Node.js على مكتبة zlib التي تمثل المعيار الذي يقاس عليه في هذه الناحية كما تعرف أيضًا باستخدامها في gzip و libpng. يستخدم الـNode.js مكتبة الـ zlib لإنشاء واجهات متزامنة وغير متزامنة إضافة إلى تمكين تدفق واجهات الضغط و فك الضغط.
الأدوات
npm
يعتبر كل ما يتعلق بالنمطية Node.js، ومع ذلك تأتي الحاجة إلى مدير حزمة ذو جودة ؛ لهذا الغرض ، تم إنشاء npm حيث يأتي مع مجموعة كبيرة من الحزم التي تم إنشاؤها من قبل المجتمع لأي نظام متكامل للبرمجة ، مما يجعل بناء تطبيقات Node.js سريعًا وسهلاً.
gyp
تتم معالجة نظام الإنشاء بواسطة gyp ، وهو منشئ مشروع يستند إلى بيثون تم نسخه من V8. يمكنه إنشاء ملفات مشاريع للاستخدام مع أنظمة الإنشاء عبر العديد من الأنظمة الأساسية. يتطلب Node.js نظام بناء لأن أجزاء كبيرة منه - وإعتماداته- مكتوبة بلغات تتطلب ترجمة.
gtest
يمكن اختبار الكود الأصلي باستخدام gtest ، وهو مأخوذ من Chromium. لأنها تتيح اختبار C / C ++ دون الحاجة إلى نود موجودة قابلة للتنفيذ.