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

متاح الإفراج عن Node.js 13.0 تحديثمنصات لتشغيل تطبيقات الشبكة في جافا سكريبت. في الوقت نفسه، تم الانتهاء من تثبيت الفرع السابق لـ Node.js 12.x، والذي تم نقله إلى فئة إصدارات الدعم طويلة المدى، والتي يتم إصدار تحديثاتها لمدة 4 سنوات. سيستمر دعم فرع LTS السابق من Node.js 10.0 حتى أبريل 2021، ودعم فرع LTS الأخير 8.0 حتى يناير 2020.

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

  • تم تحديث محرك V8 إلى الإصدار 7.8، الذي يستخدم تقنيات جديدة لتحسين الأداء، ويحسن تدمير الكائنات، ويقلل من استهلاك الذاكرة، ويقلل وقت التحضير لتنفيذ WebAssembly؛
  • يتم تمكين الدعم الكامل للتدويل وUnicode المستند إلى المكتبة بشكل افتراضي وحدة العناية المركزة (المكونات الدولية لليونيكود)، والتي تسمح للمطورين بكتابة التعليمات البرمجية دعم العمل مع لغات ومناطق مختلفة. تم الآن تثبيت وحدة العناية المركزة الكاملة بشكل افتراضي؛
  • استقرت واجهة برمجة التطبيقات خيوط العمال, السماح إنشاء حلقات أحداث متعددة الخيوط. يعتمد التنفيذ على وحدة Working_threads، والتي تسمح لك بتشغيل تعليمات JavaScript البرمجية في عدة سلاسل رسائل متوازية. تم أيضًا نقل الدعم المستقر لـ Workers Threads API إلى فرع LTS في Node.js 12.x؛
  • تمت زيادة متطلبات المنصات. للتجميع الآن مطلوب على الأقل macOS 10.11 (يتطلب Xcode 10)، AIX 7.2، Ubuntu 16.04، Debian 9، EL 7، Alpine 3.8، Windows 7/2008؛
  • دعم محسّن لـ Python 3. إذا كان النظام يحتوي على Python 2 وPython 3، فلا يزال Python 2 مستخدمًا، ولكن تمت إضافة القدرة على البناء عند تثبيت Python 3 فقط على النظام؛
  • تمت إزالة التطبيق القديم لمحلل HTTP ("—http-parser=legacy"). الاستدعاءات والخصائص التي تمت إزالتها أو إهمالها FSWatcher.prototype.start()، ChildProcess._channel، طريقة open() في كائنات ReadStream وWriteStream، request.connection، Response.connection، Module.createRequireFromPath()؛
  • التالي خرج التحديث 13.0.1، الذي أصلح العديد من الأخطاء بسرعة. على وجه الخصوص، تم حل مشكلة عرض npm 6.12.0 تحذيرًا بشأن استخدام إصدار غير مدعوم.

دعونا نتذكر أنه يمكن استخدام منصة 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

إضافة تعليق