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