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

يأخذ مكانا الإفراج عن Node.js 14.0 تحديثمنصات لتشغيل تطبيقات الشبكة في جافا سكريبت. Node.js 14.0 هو فرع دعم طويل المدى، ولكن لن يتم تعيين هذه الحالة إلا في أكتوبر، بعد الاستقرار. سيتم دعم Node.js 14.0 ليتم تنفيذها حتى أبريل 2023. ستستمر صيانة فرع LTS السابق من Node.js 12.0 حتى أبريل 2022، والعام السابق لآخر فرع LTS 10.0 حتى أبريل 2021. سينتهي دعم الفرع المرحلي 13.x في يونيو من هذا العام.

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

  • تم تثبيت القدرة على التوليد سريعًا أو عند وقوع أحداث معينة التقارير التشخيصية، والتي تعرض الأحداث التي تساعد في تشخيص المشكلات مثل الأعطال وتدهور الأداء وتسرب الذاكرة والحمل الثقيل على وحدة المعالجة المركزية وإخراج الأخطاء غير المتوقعة وما إلى ذلك.
  • تمت إضافة دعم API التجريبي التخزين المحلي غير المتزامن مع تنفيذ فئة AsyncLocalStorage، والتي يمكن استخدامها لإنشاء حالة غير متزامنة مع المعالجات بناءً على مكالمات رد الاتصال والوعود. يسمح لك AsyncLocalStorage بتخزين البيانات أثناء معالجة طلب الويب، وهو ما يذكرنا بالتخزين المحلي لمؤشر الترابط في اللغات الأخرى.
  • تمت إزالة رسالة التحذير حول الميزة التجريبية عند التحميل وحدات ECMAScript 6 تحديث متصلة ومصدرة باستخدام بيانات الاستيراد والتصدير. وفي الوقت نفسه، يظل تنفيذ وحدات الإدارة السليمة بيئيًا في حد ذاته تجريبيًا.
  • تم تحديث محرك V8 إلى الإصدار 8.1 (1, 2, 3)، والذي يتضمن تحسينات وميزات جديدة للأداء مثل عامل تشغيل التسلسل المنطقي الجديد "؟؟" (يُرجع المعامل الأيمن إذا كان المعامل الأيسر NULL أو غير محدد، والعكس صحيح)، عامل التشغيل "؟" للتحقق لمرة واحدة من سلسلة الخصائص أو الاستدعاءات بأكملها (على سبيل المثال، "db?.user?.name?.length" بدون عمليات فحص أولية)، وطريقة Intl.DisplayName للحصول على الأسماء المترجمة، وما إلى ذلك.
  • تم إجراء مراجعة لواجهة برمجة تطبيقات Streams، بهدف تحسين اتساق واجهات برمجة تطبيقات Streams وإزالة الاختلافات في سلوك الأجزاء الأساسية من Node.js. على سبيل المثال، سلوك http.OutgoingMessage قريب من الدفق.Writable، وnet.Socket يشبه الدفق.Duplex. يتم تعيين خيار التدمير التلقائي على "صحيح" افتراضيًا، مما يعني استدعاء "_destroy" عند الانتهاء.
  • تمت إضافة دعم API التجريبي هل كنت (واجهة نظام WebAssembly) ، وتوفير واجهات برمجية للتفاعل المباشر مع نظام التشغيل (POSIX API للعمل مع الملفات والمقابس وما إلى ذلك).
  • زيادة المتطلبات ل الحد الأدنى من الإصدارات المترجمين والمنصات: macOS 10.13 (High Sierra)، دول مجلس التعاون الخليجي 6، ويندوز الأحدث 7/2008R2.

دعونا نتذكر أنه يمكن استخدام منصة 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، وهو عبارة عن بنية فوقية ليبيف على أنظمة Unix وعبر IOCP على Windows. يتم استخدام المكتبة لإنشاء تجمع مؤشرات الترابط libio، لأداء استعلامات DNS في وضع عدم الحظر متكامل ج آريس. يتم تنفيذ كافة استدعاءات النظام التي تسبب الحظر داخل تجمع مؤشرات الترابط ثم، مثل معالجات الإشارة، تمرر نتيجة عملها مرة أخرى عبر أنبوب غير مسمى. يتم ضمان تنفيذ تعليمات JavaScript البرمجية من خلال استخدام محرك تم تطويره بواسطة Google V8 (بالإضافة إلى ذلك، تعمل Microsoft على تطوير إصدار Node.js باستخدام محرك Chakra-Core).

يشبه Node.js في جوهره أطر العمل بيرل AnyEvent, آلة روبي للأحداث, ملتوية بيثون и تطبيق الأحداث في Tcl، ولكن حلقة الأحداث في Node.js مخفية عن المطور وتشبه معالجة الأحداث في تطبيق ويب يعمل في المتصفح. عند كتابة تطبيقات لـnode.js، من الضروري مراعاة تفاصيل البرمجة المبنية على الأحداث، على سبيل المثال، بدلاً من القيام بـ "var result = db.query("select..");" مع انتظار الانتهاء من العمل والمعالجة اللاحقة للنتائج، يستخدم Node.js مبدأ التنفيذ غير المتزامن، أي. يتم تحويل الكود إلى "db.query("select..", function (result) {result treatment});"، حيث سيتم تمرير التحكم على الفور إلى مزيد من التعليمات البرمجية، وستتم معالجة نتيجة الاستعلام عند وصول البيانات. .

المصدر: opennet.ru

إضافة تعليق