إصدار JavaScript Node.js 17.0 من جانب الخادم

تم إطلاق Node.js 17.0 ، وهو نظام أساسي لتنفيذ تطبيقات الشبكة في JavaScript. Node.js 17.0 هو فرع دعم منتظم مع تحديثات حتى يونيو 2022. في الأيام المقبلة ، سيتم الانتهاء من تثبيت فرع Node.js 16 ، والذي سيحصل على حالة LTS وسيتم دعمه حتى أبريل 2024. ستستمر صيانة فرع Node.js 14.0 LTS السابق حتى أبريل 2023 ، وفرع 12.0 LTS السابق حتى أبريل 2022.

التحسينات الرئيسية:

  • تم تحديث محرك V8 إلى الإصدار 9.5.
  • استمر تنفيذ متغيرات لقاعدة API على أساس استخدام واجهة الحوسبة غير المتزامنة Promise. بالإضافة إلى واجهات برمجة تطبيقات Timers Promises و Streams Promises التي تم اقتراحها سابقًا ، تقدم Node.js 17.0 واجهة برمجة تطبيقات Readline Promise API لقراءة البيانات سطرًا بسطر باستخدام وحدة readline. استيراد * كـ readline من "عقدة: readline / وعود" ؛ import {stdin as input، stdout as output} من 'process'؛ const rl = readline.createInterface ({إدخال ، إخراج}) ؛ const answer = await rl.question ('ما رأيك في Node.js؟') ؛ console.log ('شكرا لك على ملاحظاتك القيمة: $ {answer}')؛ rl.close () ؛
  • تم تحديث مكتبة OpenSSL المتوفرة إلى الإصدار 3.0 (باستخدام تفرع quictls / openssl مع تمكين دعم بروتوكول QUIC).
  • تأكد من عرض إصدار Node.js في تتبعات المكدس للأخطاء الفادحة التي تتسبب في إنهاء التطبيق.

بالإضافة إلى ذلك ، يمكننا أن نذكر القضاء على ثغرات أمنية في الفروع الحالية لـ Node.js (CVE-2021-22959 ، CVE-2021-22960) ، والتي تجعل من الممكن تنفيذ هجمات من فئة تهريب طلب HTTP (HRS) ، والتي السماح ، من خلال إرسال طلبات العميل المصممة خصيصًا ، بالتدخل في محتوى الطلبات المقدمة من مستخدمين آخرين تمت معالجتها في نفس السلسلة بين الواجهة الأمامية والخلفية (على سبيل المثال ، يمكنك تحقيق استبدال شفرة JavaScript الضارة في جلسة مستخدم آخر). سيتم الكشف عن التفاصيل لاحقًا ، ولكن في الوقت الحالي ، من المعروف فقط أن المشكلات ناتجة عن المعالجة غير الصحيحة للمسافات بين اسم رأس HTTP والنقطتين ، بالإضافة إلى المعالجة المختلفة لعودة أول السطر وأحرف تغذية السطر في كتلة المعلمة المستخدمة عند التمرير نص الطلب في أجزاء في الوضع "المقسم". ".

تذكر أنه يمكن استخدام النظام الأساسي Node.js لصيانة الخادم لتطبيقات الويب ولإنشاء برامج شبكة عميل وخادم عادية. لتوسيع وظائف التطبيقات لـ Node.js ، تم إعداد مجموعة كبيرة من الوحدات النمطية ، حيث يمكنك العثور على وحدات مع تنفيذ HTTP و SMTP و XMPP و DNS و FTP و IMAP و POP3 وخوادم وعملاء ووحدات للتكامل مع أطر الويب المختلفة ومعالجات WebSocket و Ajax وموصلات DBMS (MySQL و PostgreSQL و SQLite و MongoDB) ومحركات القوالب ومحركات CSS وتطبيقات خوارزميات التشفير وأنظمة الترخيص (OAuth) ومحللات XML.

لضمان معالجة عدد كبير من الطلبات المتوازية ، يستخدم Node.js نموذج تنفيذ رمز غير متزامن يعتمد على معالجة الأحداث غير المحظورة وتعريف معالجات رد الاتصال. الطرق المدعومة لتوصيلات تعدد الإرسال هي epoll و kqueue و / dev / poll و select. لتعدد إرسال الاتصال ، يتم استخدام مكتبة libuv ، وهي وظيفة إضافية لـ libev على أنظمة Unix و IOCP على Windows. تُستخدم مكتبة libeio لإنشاء مجموعة مؤشرات ترابط ، ويتم دمج c-ares لإجراء استعلامات DNS في وضع عدم الحظر. يتم تنفيذ جميع استدعاءات النظام التي تسبب الحجب داخل تجمع مؤشرات الترابط ، وبعد ذلك ، مثل معالجات الإشارات ، تنقل نتيجة عملهم مرة أخرى عبر أنبوب غير مسمى (أنبوب). يتم توفير تنفيذ كود JavaScript من خلال استخدام محرك V8 الذي طورته Google (بالإضافة إلى ذلك ، تقوم Microsoft بتطوير نسخة من Node.js مع محرك Chakra-Core).

في جوهره ، يشبه Node.js Perl AnyEvent و Ruby Event Machine و Python Twisted Framework وتطبيق حدث Tcl ، لكن حلقة الحدث في Node.js مخفية عن المطور وتشبه معالجة الأحداث في تطبيق ويب قيد التشغيل في المتصفح. عند كتابة تطبيقات لـ node.js ، تحتاج إلى مراعاة تفاصيل البرمجة المدفوعة بالأحداث ، على سبيل المثال ، بدلاً من تنفيذ "var result = db.query (" select .. ")؛" مع انتظار اكتمال العمل والمعالجة اللاحقة للنتائج ، يستخدم Node.js مبدأ التنفيذ غير المتزامن ، أي يتم تحويل الكود إلى "db.query (" حدد .. "، الوظيفة (النتيجة) {معالجة النتائج}) ؛" ، حيث ينتقل عنصر التحكم على الفور إلى رمز إضافي ، وستتم معالجة نتيجة الاستعلام عند وصول البيانات.

المصدر: opennet.ru

إضافة تعليق