٣ يونيو ٢٠٢٠

تعدد الأشكال

تتطور لغة جافاسكريبت بثبات. تظهر مقترحات جديدة للغة بانتظام, يتم تحليلها و, إذا كانت جديرة بالإهتمام, يتم إضافتها إلى القائمة في https://tc39.github.io/ecma262/ و من ثم التقدم في specification.

الفرق خلف محركات جافاسكريبت لديهم افكارهم الخاصه عن ماذا يقوموا بتنفيذه اولاً. قد يقررون تنفيذ المقترحات الموجودة في المسودة وتأجيل الأشياء الموجودة بالفعل في المواصفات, لأنهم أقل إثارة للاهتمام أو يصعب القيام بهم.

لذا فمن الشائع تمامًا أن يقوم المحرك بتطبيق الجزء القياسي فقط.

صفحة جيدة لمعرفة الحالة الحالية لدعم ميزات اللغة هي https://kangax.github.io/compat-table/es6/ (إنها ضخمه, لدينا الكثير لندرسه بعد).

Babel

عندما نستخدم الميزات الحديثة للغة, قد تفشل بعض المحركات في دعم مثل هذا الكود. كما يقال, لا يتم تنفيذ جميع الميزات في كل مكان.

هنا Babel تأتي لإنقاذ الموقف.

Babel هي transpiler. إنها تعيد كتابة كود جافاسكريبت الحديث إلى معايير سابقة.

فعلياً, يوجد قسمين في Babel:

  1. الأول, برنامج المترجم, الذي يعيد كتابة الكود. يقوم المطور بتشغيله على جهاز الكمبيوتر الخاص به. إنه يعيد كتابة الكود للمعايير القديمة. ثم يتم تسليم الكود إلى الموقع الإلكتروني للمستخدمين. أنظمة بناء المشاريع الحديثة مثل webpack توفير وسائل لتشغيل الترجمة تلقائيًا عند كل تغيير للكود, بحيث يسهل الاندماج في عملية التطوير.

  2. الثاني, تعدد الأشكال.

    قد تتضمن ميزات اللغة الجديدة وظائف مضمنة جديدة وتركيبات بناء جملة. المترجم يقوم بإعادة بناء الكود, تحويل بناء الجملة إلى التركيبات القديمة. و لكن بالنسبة للدوال المُضمنه الجديدة, نريد تنفيذهم. جافاسكريبت هى لغه ديناميكيه للغايه, الـ سكريبتات يمكن ان تقول بـ إضافة/تعديل أي دوال, بحيث يتصرفون وفقًا للمعايير الحديثة.

    الـ سكريبت الذي يقوم بـ تعديل/إضافة الدوال الجديده يسمى “polyfill”. إنه “يملأ” الفجوة و يضيف كل الدوال المفقودة.

    إثنان مهمان من polyfills هما:

    • core js الذي يوفر الكثير, يسمح بتضمين الميزات المطلوبة فقط.
    • polyfill.io خدمة توفر سكريبت مع polyfills, اعتمادًا على الميزات ومتصفح المستخدم.

لذا, إذا كنا سنستخدم ميزات اللغة الحديثة, الـ transpiler و polyfill ضروريان.

أمثلة في البرنامج التعليمي

يمكن تشغيل معظم الأمثلة في مكانها, مثل ذلك:

alert('إضغط زر "Play" في الجزء الأيمن العلوي للتشغيل');

لن تعمل الأمثلة التي تستخدم جافاسكريبت الحديثة إلا إذا كان متصفحك يدعمها.

عادةً ما يكون Google Chrome هو الأحدث مع ميزات اللغة, جيد فى تشغيل العروض التوضيحيه بدون اى مترجمات transpilers, ولكن المتصفحات الحديثة الأخرى تعمل أيضًا بشكل جيد.

خريطة الدورة التعليمية

التعليقات

إقرأ هذا قبل أن تضع تعليقًا…
  • إذا كان لديك اقتراحات أو تريد تحسينًا - من فضلك من فضلك إفتح موضوعًا فى جيتهاب أو شارك بنفسك بدلًا من التعليقات.
  • إذا لم تستطع أن تفهم شيئّا فى المقال - وضّح ماهو.
  • إذا كنت تريد عرض كود استخدم عنصر <code> ، وللكثير من السطور استخدم <pre>، ولأكثر من 10 سطور استخدم (plnkr, JSBin, codepen…)