الدليل الكامل لتحديثات ECMAScript 2025 للمطورين

يوليو 6, 2025

📘 شرح تفصيلي لتحديثات ECMAScript 2025

جميع مميزات ECMAScript 2025، مع أمثلة عملية وفهم ليه الميزة دي مهمة لأي مبرمج واجهة أمامية.

١. مجموعات مسماة مكررة في الـ Regex

دلوقتي تقدر تستخدم نفس اسم المجموعة أكتر من مرة في فروع مختلفة من الـ regex، وده بيسهل التعامل مع تنسيقات متعددة.

const pattern = /ECMAScript(?<version>[0-9]{4})|ES(?<version>[0-9]{2})/;
"ECMAScript2025".match(pattern).groups.version; // "2025"

الأهمية: بتخلي الـ regex أسهل في القراءة وقابل لإعادة الاستخدام.

٢. دوال جديدة لـ Set

اتضافت دوال زي union() وintersection() وdifference() علشان تسهّل عمليات المقارنة والدمج بين المجموعات.

const a = new Set([1, 2, 3]);
const b = new Set([3, 4]);
a.union(b); // Set {1, 2, 3, 4}

الأهمية: مفيش داعي تحوّل الـ Set لـ Array علشان تشتغل عليه، كل حاجة بقت جاهزة ومباشرة.

٣. Modifiers في أجزاء من الـ Regex

بقى ممكن تطبق فلاغ زي i (case-insensitive) على جزء معين من الـ regex من غير ما يطبّق على كله.

const pat = /(?i:bearer)abc/;
"Bearerabc".match(pat);

الأهمية: تحكم أدق في التحقق من النصوص، خصوصًا لو بتتعامل مع مدخلات مختلفة.

٤. import attributes

تقدر تستخدم خصائص إضافية وقت استيراد modules في المتصفح، وده بيساعد في تخصيص طريقة التحميل.

<script type="module" importattributes="mode=auto">
  import data from './data.js';
</script>

الأهمية: تحكم أفضل في طريقة تحميل الـ JavaScript modules، خصوصًا في المشاريع الكبيرة.

٥. Iterator Helpers

دلوقتي تقدر تستخدم map() وfilter() وtake() مباشرة على الـ iterator.

for await (const item of someArray[Symbol.iterator]().filter(x => x > 3)) {
  console.log(item);
}

الأهمية: بتقلل الكود وتخليه أوضح لما تتعامل مع بيانات بتتغير باستمرار.

٦. Promise.try()

طريقة جديدة تخلّيك تبدأ promise وفي نفس الوقت تتعامل مع الأخطاء جوّه try/catch من غير تعقيد.

Promise.try(() => {
  if (Math.random() > 0.5) throw new Error('Oops');
  return 42;
})
.then(console.log)
.catch(console.error);

الأهمية: كود أنضف وأسهل في التعامل مع العمليات اللي ممكن ترجع خطأ.

٧. Float16Array

نوع جديد من الـ typed arrays بيستخدم 16-bit بس، وده بيوفر في الذاكرة وبيسرّع الأداء.

const arr = new Float16Array(4);
arr[0] = 1.5;
console.log(arr[0]);

الأهمية: مفيد في الجرافيكس أو التعامل مع بيانات كتير وعايز أداء سريع.

٨. RegExp.escape()

بتديك طريقة آمنة تهرب بيها أي نص علشان تستخدمه جوه regex من غير مشاكل.

const unsafe = "hello?*";
const safe = RegExp.escape(unsafe);
const re = new RegExp(safe);

الأهمية: بتمنع الأخطاء والهجمات الناتجة عن إدخال المستخدم اللي فيه رموز regex.

المدونة

لارافيل 12.16.0 - مميزات جديدة للمطورين

يونيو 03, 2025

لارافيل 12.16.0 - مميزات جديدة للمطورين 1. قاعدات تحقق جديدة: in_array_keys دلوقتي تقدر تتحقق إن الأراي فيه على الأقل مفتاح واحد من اللي انت محددهم...

إتقان التحقق الشرطي في Laravel 12

يوليو 07, 2025

إتقان التحقق الشرطي في Laravel&nbsp;12 في Laravel&nbsp;12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...

كيف تجعل موقعك "سريع جداً" خطوة بخطوة

يوليو 30, 2025

لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...

الفرق بين Redux, Context & React Components في إدارة الحالة

أغسطس 06, 2025

عند بناء تطبيقات باستخدام React، هناك حاجة إلى إدارة البيانات التي تتغير نتيجة تفاعل المستخدم أو جلب البيانات من مصادر خارجية. توجد ثلاث وسائل رئيسي...

إتقان التكرار غير المتزامن في JavaScript باستخدام Array.fromAsync()

يوليو 27, 2025

🔍 ما هي Array.fromAsync() بالضبط؟ Array.fromAsync() هي دالة static من كائن Array، شبيهة بالدالة Array.from()، لكن الفرق الجوهري هو أن Array.fromAs...

React Labs: View Transitions وActivity

يونيو 17, 2025

React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky&nbsp;Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...