تم إطلاق Node.js 22: نظرة عامة على أبرز الميزات والتغييرات الجديدة
استقبل مجتمع مطوري JavaScript حدثًا مهمًا — تم الإصدار الرسمي لـ Node.js 22. يجلب هذا الإصدار العديد من التحسينات التي ستؤثر على مطوري الواجهة الخلفية ومنشئي أدوات سطر الأوامر على حد سواء. دعنا نستعرض أهم التغييرات التي يجب أن يعرفها كل من يعمل مع Node.js.
محرك V8 12.4: السرعة والإمكانيات الجديدة
أصبح محرك V8 المُحدّث الإصدار 12.4 هو قلب Node.js 22. هذا ليس مجرد ترقية تجميلية — بل يجلب ميزات JavaScript جديدة يمكن استخدامها بالفعل في بيئة الإنتاج:
- Array.fromAsync — طريقة ثابتة لإنشاء المصفوفات بشكل غير متزامن من الكائنات القابلة للتكرار. تُبسّط العمل مع تدفقات البيانات.
- طرق Set — استدعاءات مباشرة لـ
intersection()وunion()وdifference()للعمل مع المجموعات دون الحاجة لمكتبات خارجية. - Iterator Helpers — الطرق المنتظرة منذ فترة طويلة للعمل مع المكررات (map, filter, take وغيرها) أصبحت متاحة الآن "مباشرة من الصندوق".
require() مستقر لوحدات ESM
أحد أكثر التغييرات التي تمت مناقشتها — تم الآن تمكين العلامة --experimental-require-module افتراضيًا. هذا يعني أنه يمكنك استخدام require() لتحميل وحدات ESM (بالامتداد .mjs أو مع "type": "module" في ملف package.json).
ماذا يعني هذا للمطور:
- الانتقال التدريجي من CommonJS إلى ESM دون إعادة كتابة كل الكود.
- إمكانية ربط حزم ESM الحديثة في المشاريع القديمة.
- تبسيط الترحيل لقواعد الأكواد الكبيرة.
WebSocket محسّن والعمل مع الشبكة
يتضمن Node.js 22 عميل WebSocket مدمج (كان سابقًا تجريبيًا). الآن، لإنشاء تطبيقات الوقت الفعلي، لا حاجة لتثبيت ws أو socket.io — كل شيء متاح عبر الكائن العام WebSocket.
كما تجدر الإشارة إلى التحسينات في عميل HTTP: تم تمكين دعم HTTP/2 افتراضيًا، بالإضافة إلى إمكانية استخدام fetch() مع الكشف التلقائي عن البروكسي من متغيرات البيئة.
تغييرات في العمل مع نظام الملفات
سيقدر المطورون الذين يعملون مع الملفات الطرق الجديدة في الوحدة fs:
- fs.cp — أصبح الآن مستقرًا ويعمل بشكل أسرع من البدائل.
- fs.openAsBlob() — إنشاء Blob من ملف دون تحميله بالكامل في الذاكرة.
- دعم محسّن للروابط الرمزية على Windows.
ما تم إهماله وإزالته
كما هو الحال في أي تحديث كبير، تم وضع علامة على بعض الوظائف كمهملة أو تمت إزالتها:
- تمت إزالة الوحدة
punycodeنهائيًا (استخدمURLأو حزمةpunycodeمن npm). - تم إعلان إهمال وسيطات سطر الأوامر
--experimental-loaderو--experimental-specifier-resolution. - لم يعد الخيار
--no-experimental-fetchيعمل — أصبح fetch مدمجًا بشكل دائم.
كيفية التحديث
Node.js 22 متاح للتحميل على الموقع الرسمي nodejs.org. يُوصى بالتحديث عبر مدير الإصدارات (nvm أو fnm) لتتمكن من العودة بسرعة إذا لزم الأمر.