# جافا سكريبت الواضحة

**«جافا سكريبت الواضحة»** (الإنجليزية: *Unobtrusive JavaScript*) هي تقنية ناشئة في لغة برمجة الجافا سكريبت، والمستخدمة على الشبكة العالمية. على الرغم من أن المصطلح لا يوجد له تعريف رسمي، فمفهوم مبادئه الأساسية يتضمن مايلي:

* فصل العملية («لسلوك طبقة») من تركيب صفحة الويب / المضمون والعرض
* أفضل الممارسات لتفادي المشاكل التقليدية لبرمجة الجافا سكريبت (مثل عدم ملائمه المتصفح وعدم وجود قابلية)
* التحسين التدريجي لدعم المتصفحات التي لا تدعم وظائف الجافا سكريبت

## الحاجة إلى نموذج جديد

لغة جافا سكريبت تاريخيا كان لها سمعة باعتبارها خرقاء، ولغة (hackish) غير صالحة لتطوير التطبيقات ، هذا وقد تم إلى حد كبير نظرا للتطبيقات الغير متناسقة من اللغة نفسها في مختلف برامج التصفح، والاستخدام الواسع النطاق لرموز القص واللصق. إن الخطأ وقت التشغيل شائع بشكل كبير (وذلك من الصعب تصحيحه) أن قله من المبرمجين حاولوا أن يثبتوها، فطالما أن للنصوص سلوكا أكثر أو أقل من الطريقة المفترضه ؛ النصوص غالبا ماتفشل تماما في بعض المتصفحات.

وظهر مؤخرا العديد من المتصفحات الموحدة وجافا سكريبت وأدوات تصحيح عالية الجودة كونت المنظمة، فمن الممكن تحجيم شفرة جافا سكريبت، وأصبح من الضروري ظهور واجهات (أجاكس).

في حين كان الجافا سكريبت قد حجزت لمرّة واحده للمهام البسيطة والغير حرجة نسبيا مثل التحقق من صحة النموذج والطرافات الزخرفية، أما الآن فتستخدم لكتابة مصادر برامج كبيره ومعقده التي غالبا ما تكون جزءا من الوظائف الأساسية للموقع. أخطاء التشغيل وأي سلوك غير متوقع لم تعد عيوب بسيطه، هي عيوب قاتلة.

«جافا سكريبت الواضحة» يمكن اعتبارها جزءا كبيرا من معاييرالويب؛ لشدة الطلب للتوافق عبر المتصفح دفع إلى تزايد التركيز على الترميز الموحد، وتزايد الطلب على تطبيقات الإنترنت الغنيةهو الذي يقود الحركة إلى ظهور جافا سكريبت مخفيه قويه. على المدى اخترع في عام 2002 من قبل (Stuart Langridge)

## فصل السلوك من الترميزية

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

```
 <input type="text" name="date" onchange="validateDate(this);"/>

```

ومع ذلك، فإن الغرض من العلامات هو وصف وثيقة الهيكل، وليس سلوكا برنامجيا.. الجمع بين اثنين يؤثر سلبا على موقع الصيانة لنفس السبب الذي يجمع بين المضمون والعرض: إذا كان الموقع يحتوي على المئات من حقول التاريخ من هذا القبيل، تضاف خاصيّة onchange الملائمة لكلّ واحد (وتعدّلهم لاحقا، في حاله الحاجة) يمكن أن تكون عملية عمل مركّزة.

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

```
 <input type="text" name="date">

```

المخطوطات يمكنها بعد ذلك البحث عن جميع عناصر المدخلات بالتاريخ، وإقامتها وفقا لذلك:

باستخدام جافا سكريبت الأصلي:

```

window.onload = function(){ // ينتظر الصفحة للتحميل
 var inputs = document.getElementsByTagName('input');
 } (++for(var i=0,l=inputs.length;i<l;i
 input = inputs[i];
 if(input.name &amp;&amp; input.name=='date')
 input.onchange = function()}
 validateDate(this);}
 } } } };
function validateDate(){
 / / يعمل عندما يكون المحتوى من 'المدخلات' مع اسم 'تاريخ'متغيير.
{

```

النص التالي محدد لمكتبة موتولز:

```

window.addEvent('domready', function() {
 $$('input[name=date]').addEvent('change', function(){
 validateDate(this);
 });
});
function validateDate(element){
 / / يعمل عندما يتغير محتوى 'عنصر'.
}

```

النص التالي هو محدد لمكتبة جي كويري:

```

$(document).ready(function(){ //ينتظر الصفحة للتحميل.
 $('input[name=date]').bind('change', function (){
 validateDate(this);
 });
});

function validateDate(element){
 / /يعمل عندما يكون محتوى 'عنصر' قد تم تغييره.
}

```

لأن الغرض المقصود من السمة `name` هو لوصف الدور الدلالي للعنصر، وهذا النهج يتسق مع المعايير الحديثة التي ترتكز على الممارسات الترميزية.

## تحمل الأخطاء

ويمكن التحقيق من ذلك عن طريق التأكد من الوصلات والأشكال التي يمكن أن تحل بشكل صحيح وليس الاعتماد فقط على Ajax. في الجافا سكريبت، على سبيل المثال في تقديم نموذج يمكن إيقافه باستخدام ("return false"). إذا لم يكن هناك أي خطأ، كود (Ajax)سينفذ وتقديم النموذج سيهمل. إذا كانت أية مشاكل تحدث مع وكيل مستخدم Ajax أو إذا كان المستخدم ليس لديه جافا سكريبت، سيقدم النموذج وتكّون الصيغة التقليدية للعمل.

## أفضل الممارسات

على الرغم من أن جوهر الجافا سكريبت غير مزعجة هو مفهوم طبقة منفصلة السلوك، ودعاة النموذج سيشتركون عموما في عدد من المبادئ ذات الصلة، مثل:

* التقيد الصارم بـ (W3C DOM) ونموذج الحدث، وتجنب متصفح الملحقات الخاصة.
* بصورة أعم، جافا سكريبت من أفضل الممارسات في كثير من الأحيان فهي موازية للغات البرمجة الأخرى، مثل (encapsulation an) abstraction layers), تجنّب المتغيّرات العالمية، اتفاقيات التسمية ذات المغزى، واستخدام أنماط التصميم المناسب، واختبارالمنهجية. ومثل هذه المبادئ ضروريه إلى تطوير البرامج الواسعة النطاق، ولكن لوحظ أنه لم يتم على نطاق واسع في برمجة جافا سكريبت في الماضي وهذا الاعتماد يعتبر عنصرا أساسيا من عناصر جافا سكريبت في الانتقال من كونها لغه ألعاب إلى أداة للتطوير والتنمية الحقيقية.

## انظر أيضا

* تحمل الأخطاء
* التحسين التدريجي

## المراجع