تحولت Node.js إلى 10 سنوات في 2019. تجاوز عدد الحزم المتوفرة في سجل npm علامة المليون. كل عام ، يزداد حجم التنزيل لمنصة Node.js نفسها بنسبة 40٪. ومن المعالم الأخرى لـ Node.js انضمام هذا المشروع إلى مؤسسة OpenJS. بفضل هذا ، يمكننا أن نتوقع حدوث تحسن في حالة واستقرار المشروع ، وكذلك بشكل عام ، تطورات إيجابية في مجال التفاعل بين أعضاء مجتمع JavaScript.

من السهل أن نرى أنه في فترة زمنية قصيرة ، على مدار عام ، حدثت أشياء كثيرة مثيرة للاهتمام في عالم Node.js. كل عام ، تكتسب Node.js زخما. ليس لدينا سبب للاعتماد على أي شيء آخر في عام 2020.
في الإصدارات القادمة من Node.js ، سنجد العديد من الميزات المثيرة للاهتمام. هذه المادة مخصصة لأهم الابتكارات في النظام الأساسي التي قد تظهر في عام 2020.
الابتكارات Node.js 13
في بداية ديسمبر 2019 ، وقت كتابة هذه المادة ، Node.js 13 هو أحدث إصدار من هذه المنصة. هناك بالفعل العديد من الميزات والتحسينات الجديدة التي يمكنك من خلالها البدء في التجريب والتحضير للعام الجديد. هؤلاء بعض منهم:
- وحدات ECMAScript.
- دعم WebAssembly.
- تقارير التشخيص.
- الدعم الكامل للتدويل. على وجه الخصوص ، نحن نتحدث عن صيغ التاريخ والوقت والأرقام والعملات.
- دعم لبروتوكول QUIC.
- تحسين أداء محرك جافا سكريبت V8.
قبل الدخول في تفاصيل حول هذه الميزات ، سنتحدث عن ما يمكن توقعه في مناطق إصدار الإصدارات الجديدة من Node.js ودعم الإصدارات التي تم إصدارها بالفعل من النظام الأساسي.
عملية إصدار إصدارات جديدة من Node.js في عام 2020
يتم إصدار نسخة رئيسية جديدة من Node.js كل 6 أشهر. واحد في أكتوبر ، والآخر في أبريل. يطلق عليهم "الإصدارات الحالية". في وقت كتابة هذا التقرير ، كان الإصدار الحالي من Node.js هو الإصدار الثالث عشر ، الذي تم إصداره في أكتوبر 2019.
يتم إصدار الإصدارات ذات الأرقام الفردية (الإصدار 9 ، الإصدار 11 ، الإصدار 13) كل شهر أكتوبر. إنها ذات صلة لفترة زمنية قصيرة نسبيًا ، ولا تعتبر جاهزة للاستخدام في الإنتاج. يمكن اعتبارها إصدارات بيتا من النظام الأساسي. تم تصميمها لاختبار الميزات والتغييرات الجديدة التي ستندرج في الإصدار التالي من Node.js برقم زوجي.
يتم إصدار الإصدارات ذات الأرقام الزوجية (v8 ، v10 ، v12) كل أبريل. بعد إصدار مثل هذا الإصدار ، يتوقف إصدار تحديثات الإصدار "الزوجي" السابق. على الرغم من أن هذه الإصدارات أكثر ثباتًا من "الإصدارات الفردية" ، يستمر العمل النشط عليها لمدة 6 أشهر أخرى. في هذا الوقت ، يمكن اعتبارها في حالة تصفية الإصدار.
بعد الانتهاء من النسخة "الزوجية" في غضون 6 أشهر ، تدخل مرحلة جديدة في دورة حياتها ، وتتحول إلى إصدار LTS (دعم طويل الأجل ، دعم طويل الأجل). تعتبر إصدارات LTS من Node.js جاهزة للاستخدام في الإنتاج. خلال الأشهر الـ 12 المقبلة ، يتم إصدار إصلاحات الأخطاء والتحديثات الأمنية والتحسينات الأخرى لهذه الإصدارات. كل هذا يتم مع مراعاة الحفاظ على قابلية تشغيل التطبيقات الحالية.
بعد مرحلة LTS ، تبدأ مرحلة الصيانة. يتم إصدار إصلاحات الأخطاء فقط وتحديثات الأمان في الوقت الحالي. تستمر مرحلة الحراسة لمدة 18 شهرًا. بعد مرور هذا الوقت ، ينتقل الإصدار المقابل إلى نهاية دورة دورة الحياة (EOL ، نهاية الحياة) ولم يعد مدعومًا.
Node.js Version دورة الحياةخطة الإصدار المتوقعة للإصدارات الجديدة من Node.js في عام 2020
في عام 2020 ، يمكننا أن نتوقع الخطة التالية لإصدار إصدارات جديدة من Node.js:
من يناير إلى مارس 2020
- الإصدار الحالي هو 13.x ، والعمل النشط قيد التنفيذ.
- الإصدارات 10.x و 12.x في حالة LTS.
أبريل 2020
- الإصدار 14.x يصبح الحالي.
- توقف العمل على الإصدار 13.x بعد فترة وجيزة من إصدار الإصدار 14.x.
- الإصدار 10.x يدخل مرحلة الصيانة.
أكتوبر 2020
- يتم تحرير الإصدار 15.x ، والذي يصبح حاليًا.
- الإصدار 14.x يدخل مرحلة LTS.
- يذهب الإصدار 12.x إلى مرحلة الصيانة.
خطط لإصدار إصدارات جديدة من Node.js في عام 2020يرجى ملاحظة أنه يتم تحديد نهاية دورة حياة Node.js 8 بنهاية عام 2019. الحقيقة هي أن هذا الإصدار من النظام الأساسي يعتمد على OpenSSL-1.0.2 ، ودورة حياة هذا الإصدار من OpenSSL تنتهي أيضًا في نهاية عام 2019. خطط لترجمة تطبيقات Node.js 8.x إلى Node.js 10.x أو 12.x إذا لم تقم بذلك بالفعل.
وحدات ECMAScript
في الإصدار 13.2.0 ، يدعم Node.js كلاً من وحدات CommonJS ووحدات ECMAScript القياسية الجديدة (وحدات ES) دون الحاجة إلى أي أدوات تابعة لجهات أخرى. هذا يعني أنه يمكن للمطورين أخيرًا استخدام إرشادات
import
export
، نفس الإرشادات التي ربما يستخدمونها بالفعل عند إنشاء مشاريع الواجهة الأمامية في JavaScript. بالإضافة إلى ذلك ، من المهم ملاحظة أن الوحدات النمطية ES في Node.js تعمل في الوضع الصارم افتراضيًا. نتيجة لذلك ، لتمكين هذا الوضع ، لا تحتاج إلى إضافة
"use strict";
إلى بداية كل ملف
"use strict";
.
ومع ذلك ، من أجل إبلاغ Node.js أن المطور يستخدم وحدات ES ، يجب القيام بشيء ما. هنا يمكنك استخدام إحدى الطريقتين الأكثر استخدامًا. أول هذه العناصر هو أن الملفات يتم تعيين الامتداد
.mjs
. والثاني هو أن أقرب ملف
package.json
يضع بنية
"type": "module"
.
كل شيء واضح مع الطريقة الأولى - تتم إعادة تسمية ملفات
.js
إلى ملفات
.mjs
. عند استخدام الطريقة الثانية ، في
package.json
file root ، أو في
package.json
، الموضوعة في المجلد الذي يحتوي على وحدات ES ، أضف خاصية
type
مع
module
القيمة:
{ "type": "module" }
الاحتمال الآخر المتعلق بالعمل مع وحدات ES هو تضمينها في الملف الجذر لمشروع
package.json
وتغيير امتدادات الملفات باستخدام وحدات CommonJS إلى
.cjs
.
شخصيا ، يبدو لي أن استخدام
.mjs
أو
.cjs
ليست فكرة جيدة بشكل خاص. لذلك ، يسرني أن أرى أنه للعمل مع وحدات ES ، يكفي إجراء تغييرات على ملف
package.json
.
استيراد وحدات WebAssembly
يدعم Node.js الآن ليس فقط وحدات ES ، ولكن أيضًا استيراد وحدات WebAssembly (وحدات Wasm). وحدة wasm عبارة عن ملف يحتوي على تعليمات برمجية بتنسيق ثنائي محمول ، والذي يمكن تحليله بشكل أسرع من رمز JavaScript مشابه ويتم تنفيذه بسرعة مماثلة للوظيفة الأصلية. يمكن إنشاء وحدات Wasm عن طريق تطوير التعليمات البرمجية المصدر بلغات مثل C / C ++ و Go و C # و Java و Python و Elixir و Rust وغيرهم.
لا يزال دعم وحدات WebAssembly في مرحلة تجريبية. لتمكين هذه الميزة ، تحتاج إلى تمرير Node.js علامة سطر أوامر خاصة عند بدء تشغيل التطبيق:
node --experimental-wasm-modules index.js
النظر في مثال. افترض أن لدينا مكتبة لمعالجة الصور تم تنفيذها كوحدة نمطية لـ Wasm. للعمل مع مثل هذه المكتبة في كود JS ، يمكنك القيام بذلك:
import * as imageUtils from "./imageUtils.wasm"; import * as fs from "fs"; ( async () => { const image = await fs.promises.readFile( "./image.png" ); const updatedImage = await imageUtils.rotate90degrees( image ); } )();
هنا استوردنا الوحدة واستخدمنا الوظيفة المتاحة فيها.
يمكن استيراد الوحدات النمطية Wasm في Node.js باستخدام عبارة
import()
الحيوية الجديدة:
"use strict"; const fs = require("fs"); ( async () => { const imageUtils = await import( "./imageUtils.wasm" ); const image = await fs.promises.readFile( "./image.png" ); const updatedImage = await imageUtils.rotate90degrees( image ); } )();
واجهة نظام WebAssembly
تم تطوير تقنية WebAssembly ، مثل JavaScript ، مع وضع الأمان في الاعتبار. يعمل رمز Wasm في بيئة آمنة ، تسمى أحيانًا صندوق رمل. يتيح لك ذلك حماية نظام التشغيل الذي يعمل فيه من هذا الرمز. ومع ذلك ، في بعض الحالات ، يمكن أن تستفيد الوحدات النمطية Wasm التي تعمل في بيئة Node.js فقط من القدرة على إجراء مكالمات النظام.
هذا هو المكان الذي تدخل فيه واجهة نظام WebAssembly (واجهة نظام WebAssembly ، WASI) إلى المشهد. تم تصميم WASI كواجهة قياسية للوصول إلى الأنظمة التي تعمل على رمز Wasm. قد تتضمن هذه الأنظمة تطبيقات المضيف وأنظمة التشغيل وما إلى ذلك.
يمكنك العثور على
التزام حديث في مستودع Node.js لتقديم دعم WASI الأولي. في الواقع ، تعد واجهة نظام WebAssembly إحدى الميزات المهمة لـ Node.js ، والتي يمكن توقع ظهورها في عام 2020.
دعم تقرير التشخيص
تقارير التشخيص هي مستندات JSON مخصصة للأشخاص الذين تحتوي على معلومات حول تشغيل آليات البرامج. قد تتضمن هذه المعلومات مكدسات استدعاء الوظائف ، ومعلومات حول نظام التشغيل ، وبيانات حول الوحدات المحملة ومؤشرات مفيدة أخرى تهدف إلى المساعدة في دعم التطبيقات. يمكن إنشاء تقارير مماثلة عند حدوث استثناءات غير معالج ، تحدث أخطاء فادحة. يمكن إنشاؤها بواسطة إشارات من العمليات أو باستخدام API الجديدة
process.report
. يمكن تكوين Node.js بحيث يتم حفظ تقارير التشخيص في المجلد المحدد باستخدام أسماء الملفات المحددة.
الآن هذه الميزة تجريبية. لتمكينه ، تحتاج إلى تمرير Node.js علامة خاصة عند بدء تشغيل التطبيق:
node --experimental-report --report-uncaught-exception --report-filename=./diagnostics.json index.js
تقديم الدعم للتدويل
يتضمن Node.js 13.x الإصدار الكامل من مكتبة ICU (
المكونات الدولية لليونيكود ). وحدة العناية المركزة هو مشروع شعبي ناضج. من بين العديد من الميزات في هذه المكتبة ، يمكن ملاحظة دعم أرقام التنسيق والتواريخ والعملات وإخراج الوقت في تنسيق مترجم. إنها قادرة على إجراء العمليات الحسابية المتعلقة بفواصل زمنية ، وهي قادرة على مقارنة النصوص ونصوص تحويل الشفرة من Unicode إلى الترميزات الأخرى والعكس.
بعض الميزات الجديدة الأخرى لـ Node.js
فيما يلي بعض الميزات الأكثر إثارة للاهتمام في Node.js ، والتي يمكن توقع ظهورها في عام 2020:
- دعم لبروتوكول QUIC. QUIC هو بروتوكول إنترنت عصري يمكنك من خلاله إنشاء اتصالات موثوقة ومثمرة بين التطبيقات.
- دعم محسّن لـ Python 3. في عام 2020 ، يجب أن نكون قادرين على بناء وحدات Node.js والوحدات المحلية باستخدام Python 3.
- نسخة محدثة من محرك JS V8. توفر الإصدارات 7.8 و 7.9 من محرك V8 أداءً متزايدًا للتطبيق ودعم Wasm.
- المواضيع عامل API مستقرة. تسمح لك واجهة برمجة تطبيقات Worker Threads بموازنة الحوسبة المكثفة.
أعزائي القراء! ماذا تتوقع أكثر من منصة Node.js في عام 2020؟
