منصة JavaScript من جانب الخادم Node.js 18.0 متاحة

تم إصدار Node.js 18.0، وهو عبارة عن منصة لتشغيل تطبيقات الشبكة في JavaScript. تم تصنيف Node.js 18.0 على أنه فرع دعم طويل المدى، ولكن سيتم تعيين هذه الحالة فقط في أكتوبر، بعد الاستقرار. سيتم دعم Node.js 18.x حتى أبريل 2025. ستستمر صيانة فرع LTS السابق من Node.js 16.x حتى أبريل 2024، والعام الذي يسبق آخر فرع LTS 14.x حتى أبريل 2023. سيتم إيقاف فرع 12.x LTS في 30 أبريل، وسيتم إيقاف فرع Node.js 17.x المرحلي في 1 يونيو.

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

  • تم تحديث محرك V8 إلى الإصدار 10.1، والذي يُستخدم في Chromium 101. وبالمقارنة مع الإصدار 17.9.0 من Node.js، يوجد الآن دعم لميزات مثل أساليب findLast وfindLastIndex للعثور على العناصر المتعلقة بنهاية صفيف والدالة Intl.supportedValuesOf. تحسين واجهة برمجة التطبيقات الدولية. تم تسريع عملية تهيئة حقول الفصل والأساليب الخاصة.
  • يتم تمكين واجهة برمجة التطبيقات التجريبية fetch() افتراضيًا، وهي مصممة لتحميل الموارد عبر الشبكة. يعتمد التنفيذ على التعليمات البرمجية الواردة من عميل HTTP/1.1 undici وهو أقرب ما يمكن إلى واجهة برمجة التطبيقات المماثلة المتوفرة في المتصفحات. يتضمن ذلك دعم واجهات FormData والرؤوس والطلب والاستجابة لمعالجة طلبات HTTP ورؤوس الاستجابة. const res = انتظار الجلب('https://nodejs.org/api/documentation.json'); إذا (res.ok) { بيانات const = انتظار res.json(); console.log(data); }
  • تمت إضافة تطبيق تجريبي لـ Web Streams API، مما يوفر الوصول إلى تدفقات البيانات المستلمة عبر الشبكة. تتيح واجهة برمجة التطبيقات إمكانية إضافة المعالجات الخاصة بك للعمل مع البيانات عند وصول المعلومات عبر الشبكة، دون انتظار تنزيل الملف بأكمله. تتضمن الكائنات المتوفرة الآن في Node.js ReadableStream*، وTransformStream*، وWritableStream*، وTextEncoderStream، وTextDecoderStream، وCompressionStream، وDecompressionStream.
  • تم نقل Blob API إلى حالة مستقرة، مما يسمح لك بتغليف البيانات الأولية غير القابلة للتغيير للاستخدام الآمن في سلاسل عمليات مختلفة.
  • أصبحت واجهة برمجة تطبيقات BroadcastChannel مستقرة، مما يسمح لك بتنظيم تبادل الرسائل في الوضع غير المتزامن بتنسيق "مرسل واحد - العديد من المستلمين".
  • تمت إضافة عقدة الوحدة التجريبية: اختبار لإنشاء الاختبارات وتشغيلها في JavaScript والتي تُرجع النتائج بتنسيق TAP (بروتوكول اختبار أي شيء).
  • يتم توفير إنشاء التجميعات الجاهزة لـ Red Hat Enterprise Linux (RHEL) 8 والتوزيعات الأخرى المستندة إلى Glibc 2.28+، بما في ذلك Debian 10 وUbuntu 20.04، بالإضافة إلى macOS 10.15+. بسبب مشاكل في بناء محرك V8، تم إيقاف إنشاء إصدارات 32 بت لنظام التشغيل Windows مؤقتًا.
  • تم توفير خيار تجريبي لإنشاء Node.js قابل للتنفيذ بمكونات مختارة من قبل المستخدم تتم تهيئتها عند بدء التشغيل. لتحديد مكونات البداية، تمت إضافة خيار "--node-snapshot-main" إلى البرنامج النصي للتكوين، على سبيل المثال، "./configure —node-snapshot-main=marked.js; عقدة الاسم"

يمكن استخدام النظام الأساسي 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

إضافة تعليق