ما الجديد في Node.js 21: اكتشف أحدث الميزات والتحديثات

نشرت: 2024-03-26

نظرًا لحزمة النظام البيئي الضخمة والدعم المجتمعي القوي والتوافق عبر الأنظمة الأساسية، يتم استخدام Node.js بنسبة 1.4% إلى 2.22% من مواقع الويب على مستوى العالم. تخص هذه البيانات ما يقرب من 30 مليون موقع ويب [i] .

لأكثر من عقد من الزمان، كان Node.js لاعبًا حاسمًا في تطوير الويب، حيث يوفر لغة جافا سكريبت موحدة لكل من البرمجة النصية من جانب الخادم والعميل. ويضمن نموذج الإدخال/الإخراج غير المتزامن وغير المحظور الأداء العالي والكفاءة، مما يجعله مثاليًا للتعامل مع الاتصالات المتزامنة.

بالإضافة إلى ذلك، تستفيد Node.js من وقت تشغيل V8 JavaScript، مما يؤدي إلى التنفيذ السريع. مع قابلية التوسع في جوهرها، فإن Node.js مناسب تمامًا لتطبيقات الوقت الفعلي وبنيات الخدمات الصغيرة. كل هذه الميزات تجعله خيارًا مفضلاً للمطورين الذين يهدفون إلى إنشاء تطبيقات ويب حديثة وقابلة للتطوير وفعالة.

ومع ذلك، في 17 أكتوبر 2023، تم إصدار أحدث إصدار من Node.js 21 مع العديد من التحسينات الداخلية وبعض الميزات الجديدة التي تواجه المستخدم. أعطى هذا التحديث الأولوية لتحسين الأداء من خلال التنفيذ الأمثل لوقت التشغيل وتقليل حمل الذاكرة. بالإضافة إلى ذلك، فقد أدرج دعمًا محسنًا لوحدات ECMAScript والتكامل السلس مع أحدث تقنيات الويب.

في منشور المدونة هذا، سنضيف بعض السياق الإضافي حول التحسينات البارزة وتحديثات الميزات في Node.js 21.

دعونا الغوص في!

9 أبرز مميزات الإصدار 21 الأحدث من Node.js

ما الجديد في Node.js 21: اكتشف أحدث الميزات والتحديثات

1. تحديثات لمحرك جافا سكريبت V8

من التحسينات المهمة في Node.js 21 هو ترقية محرك V8 إلى الإصدار 11.8. لا يؤدي هذا التحديث إلى تحسين الأداء فحسب، بل يقدم أيضًا العديد من ميزات JavaScript البارزة.

إحدى الإضافات الجديرة بالملاحظة هي تقديم تجميع المصفوفات، مما يتيح دمج البيانات المتشابهة في مجموعات من خلال استخدام طرق مثلObject.groupBy()وMap.groupBy(). بالإضافة إلى ذلك، تم تقديم واجهة برمجة تطبيقات برمجية جديدة،ArrayBuffer.prototype.transfer، لتسهيل نقل ملكية ArrayBuffers. يعمل هذا الإصدار أيضًا على تحسين عمليات إعادة التخصيص ومعالجة تحويل ArrayBuffers التي يمكن تغيير حجمها إلى أخرى ذات طول ثابت.

علاوة على ذلك، يعمل التحديث على توسيع الدعم لـ WebAssembly من خلال دمج تعبيرات Extend-const، وتوسيع قدرات Node.js في الاستفادة من أحدث التطورات في تقنيات الويب ووظائف JavaScript.

2. الجلب المستقر وتدفقات الويب

يعمل Node.js 21 على تثبيت واجهات برمجة تطبيقات الجلب وWebStreams، ونقلها من حالتها التجريبية إلى حالة مستقرة وجاهزة للاستخدام في الإنتاج. إذا كنت تستخدم واجهات برمجة التطبيقات هذه في الإصدارات السابقة، فيمكنك الآن دمجها بثقة في سير عمل الإنتاج لديك.

توفر واجهات برمجة تطبيقات الجلب وWebStreams أسلوبًا معاصرًا ومتسقًا للتفاعل مع موارد HTTP والتدفقات داخل بيئة Node.js، مع الالتزام بمعايير الويب المعمول بها. يضمن هذا التثبيت قيام المطورين بتنفيذ هذه الميزات بطريقة موثوقة وموحدة للتعامل مع استرجاع البيانات غير المتزامنة وتدفقها في تطبيقات Node.js الخاصة بهم.

3. تقديم علامة تجريبية جديدة للوحدات

في إصدار Node.js 21، هناك إضافة ملحوظة تتمثل في تقديم علامةالنوع التجريبي الافتراضي، المصممة لتزويد المطورين بتحكم أكبر في السلوك الافتراضي لملفات الإدخال غير المخصصة بشكل صريح كوحدات ES أو CommonJS.

في غياب ميزة العلامة هذه، تم تفسير هذا الإدخال بشكل تقليدي على أنه CommonJS. مع تقديم–experimental-default-type=module، أصبح لدى المطورين الآن خيار تنشيط تنفيذ وحدة ES الشاملة في سيناريوهات محددة. يتضمن ذلك الحالات التي يتم فيها توفير إدخال السلسلة عبر –eval أو STDIN، خاصة إذا تم ترك–input-typeغير محدد.

بالإضافة إلى ذلك، عند التعامل مع الملفات التي تنتهي بـ .js أو تلك التي تفتقر إلى امتداد، يتم تشغيل العلامة عندما لا يكون هناك ملف package.json مرتبط أو يفتقر حقل package.json الرئيسي الأقرب إلى حقل "النوع" (باستثناء الموجود في دليل العقدة_الوحداتية) ). يتيح هذا التحسين للمطورين المرونة اللازمة لتجربة وحدات ES واعتمادها على نطاق أوسع، مما يوفر نهجًا دقيقًا وقابلاً للتخصيص للتعامل مع الوحدة.

4. عميل Websocket المدمج

في Node.js 21، هناك تحسين آخر ملحوظ في الميزات وهو في شكل عميل WebSocket مدمج، والذي يقدم تطبيق WebSocket تجريبيًا ومتوافقًا مع المتصفح. تتيح هذه الميزة للمطورين التفاعل مع خوادم WebSocket بسلاسة داخل تطبيقات Node.js. لتمكين هذه الوظيفة، يمكن للمطورين الاستفادة منالعلامة –experimental-websocket.

ومع ذلك، من المهم ملاحظة أنه نظرًا لكونه ميزة تجريبية، فإن التنفيذ يخضع لتغييرات محتملة في الإصدارات المستقبلية حيث يخضع للتحسين والتثبيت بناءً على تعليقات المستخدمين والمعايير المتطورة. يؤدي تقديم عميل WebSocket المدمج إلى تبسيط عملية دمج اتصالات WebSocket في تطبيقات Node.js. وهذا يوفر للمطورين طريقة مريحة وموحدة لإنشاء وإدارة اتصالات WebSocket مع الاعتراف بالطبيعة المتطورة لهذه الميزة خلال المرحلة التجريبية.

5. مشغل اختبار Node.js يدعم الآن Globs

يقدم التحديث الأخير لـ Node.js 21 دعمًا للكرة الأرضية في مشغل الاختبار. يمكّن هذا التحسين المطورين من الاستفادة من التعبيرات الشاملة عند تحديد المعلمة –test، مما يوفر طريقة أكثر قوة ومرونة لتشغيل الاختبارات. باستخدام هذه الميزة، يمكن للمطورين استخدام أنماط الكرة الأرضية متعددة الاستخدامات لتنفيذ الاختبارات بشكل أكثر كفاءة. على سبيل المثال، باستخدام أمر مثلالعقدة –test **/*.test.js، يمكن للمطورين إجراء اختبارات بسهولة لجميع الملفات ذات الامتداد.test.jsعبر أدلة متعددة. تعمل هذه الإمكانية على تحسين عملية تشغيل الاختبار، مما يوفر قدرة محسنة على التكيف وسهولة الاستخدام للمطورين الذين يعملون في مشاريع ذات هياكل ملفات متنوعة وتكوينات اختبارية.

6. أضف خيار Flush إلى وظيفة Fs.writefile()

في Node.js 21، هناك تحسين ملحوظ يتمثل في إضافة خيار "التدفق" إلى وظيفة fs.writeFile. يعالج هذا التحسين السيناريو الذي قد لا يتم فيه نقل البيانات المكتوبة إلى الملفات على الفور إلى مخزن دائم، مما قد يؤدي إلى عمليات قراءة لاحقة لاسترداد البيانات القديمة.

يوفر خيار "التدفق" الجديد، المقدم في طلب السحب (PR) هذا، للمطورين تحكمًا أكبر في سلوك التفريغ. عند تمكينه، يضمن هذا الخيار دفع البيانات بقوة إلى وحدة التخزين الدائمة عند انتهاء عملية الكتابة الناجحة. تعتبر هذه الميزة ذات قيمة خاصة في المواقف التي يكون فيها الاتساق الفوري للبيانات أمرًا بالغ الأهمية، مما يمنع حدوث بيانات قديمة ويزود المطورين بآلية كتابة ملفات أكثر موثوقية ويمكن التنبؤ بها في تطبيقات Node.js.

7. إزالة خطاف تخصيص الوحدة النمطية "globalPreload"

في Node.js 21، يمكن للمطورين إزالة رابط تخصيص الوحدة النمطية "globalPreload". وبدلاً من ذلك، يتم تشجيع المطورين على استخدام طريقة "التسجيل" لإرسال البيانات من سلسلة رسائل التطبيق إلى خطافات التخصيص، وخطاف "التهيئة" لإنشاء قناة اتصال بين سلاسل العمليات. يوفر هذا التعديل نهجًا أكثر تنظيمًا ووضوحًا لتخصيص الوحدة، مما يؤدي إلى فصل أكثر وضوحًا للمسؤوليات.

تسهل طريقة "التسجيل" نقل البيانات إلى خطافات التخصيص، بينما يلعب خطاف "التهيئة" دورًا في إعداد قنوات الاتصال بين سلاسل العمليات. تعمل هذه الآلية المحسنة على تحسين النمطية الشاملة وقابلية الصيانة لتطبيقات Node.js، بما يتماشى مع أفضل الممارسات وتعزيز بنية تعليمات برمجية أكثر سهولة وتنظيمًا للمطورين الذين يعملون مع تخصيص الوحدة.

8. Lil HTTP 9.1.2 تطبيق الوضع الصارم

تحديث آخر في Node.js 21 هو llhttp 9.1.2 والذي يوفر فرضًا صارمًا للوضع افتراضيًا، مما يضمن تعزيز موثوقية التعليمات البرمجية وأمانها. تتضمن التغييرات التواجد الإلزامي لـ\r\nبعد الرؤوس والأجزاء لمعالجة البيانات بشكل متسق. بالإضافة إلى ذلك، لم يعد نقل البيانات بعد رسالة ذاتعنوان الاتصال: إغلاق مسموحًابه، مما يعزز الالتزام بالبروتوكول والتعامل مع الاتصال. لاستيعاب حالات استخدام محددة، تم تقديم علامة–insecure-http-parser، مما يوفر للمستخدمين المرونة اللازمة لتعطيل هذه التغييرات. تهدف هذه التحديثات إلى رفع مستوى استقرار النظام واتساق معالجة البيانات في تطبيقات Node.js، مما يدفع المطورين إلى مراجعة قاعدة التعليمات البرمجية الخاصة بهم وتعديلها لتحقيق التكامل السلس.

9. تكامل الكائنات "المستكشف".

بفضل تكامل كائنات 'navigator'، يتمتع المطورون الآن بوصول سلس إلى معلومات تزامن الأجهزة من خلال navigator.hardwareConcurrency الذي تم تقديمه حديثًا. يعمل هذا التحسين على محاذاة Node.js بشكل أوثق مع بيئات المتصفح، مما يوفر طريقة موحدة للمطورين لاسترداد تفاصيل تزامن الأجهزة.

علاوة على ذلك، مع هذه الإضافة، يصبح Node.js أكثر تنوعًا، مما يمكّن المطورين من بناء تطبيقات تستفيد من موارد الأجهزة بشكل أكثر فعالية، سواء لتحسين الأداء أو تنفيذ استراتيجيات المعالجة المتوازية.

تولي مسؤولية تطوير Node.js الخاص بك باستخدام الإصدار 21

يقدم إصدار Node.js 21 مجموعة من التحسينات والتحسينات المثيرة والميزات الجديدة التي تعد برفع مستوى تجربة التطوير لديك. بدءًا من تقديم عميل WebSocket المدمج وحتى دعم globs في مشغل الاختبار، يوفر Node.js 21 للمطورين أدوات قوية لبناء تطبيقات حديثة وفعالة. أثناء استكشاف هذه التطورات، تذكر اختبار توافق تطبيقاتك والتفكير في الترقية، خاصة مع حالة نهاية العمر الافتراضي لـ Node.js 16 أو 17 أو 19. مع مراعاة تعقيد عملية الترقية والترحيل، هنا يمكن لشريك تطوير Node.js الماهر أن يكون تحويليًا.

هل أنت مستعد للارتقاء بمستوى تطوير تطبيق Node.js لديك؟ تحدث إلى خبراء التطوير لدينا!

يتمتع خبراء Node.js لدينا بالمهارة في إنشاء حلول ويب عالية الأداء وتطبيقات ذات صفحة واحدة وتطبيقات ويب تقدمية. إذا كنت ترغب في معرفة المزيد حول براعتنا في تطوير Node.js، راسلنا على [email protected] وسنتولى الأمر من هناك.

مراجع:

[i] تقنية الباكانسي