جافا سكريبت المخفية

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

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

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

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

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

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

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

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

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

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

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

<source lang="xml"> <input type="text" name="date"></source>

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

باستخدام جافا سكريبت الأصلي : <source lang="xml"> window.onload = function(){ // ينتظر الصفحه للتحميل

var inputs = document.getElementsByTagName('input'); 
} (++for(var i=0,l=inputs.length;i<l;i 
input = inputs[i]; 
if(input.name && input.name=='date') 
input.onchange = function()} 
validateDate(this);} 
} } } }; 

function validateDate(){

/ / يعمل عندما يكون المحتوى من 'المدخلات' مع اسم 'تاريخ'متغيير.

{ </source>

النص التالي محدد لـ (MooTools JavaScript library)

<source lang="xml"> window.addEvent('domready', function() {

$$('input[name=date]').addEvent('change', function(){ 
validateDate(this); 
}); 

}); function validateDate(element){

/ / يعمل عندما يكون محتوى 'عنصر' قد تم تغييره.

} </source>

النص التالي هو محدد لـ (jQuery JavaScript library:) <source lang="xml"> $(document).ready(function(){ //ينتظر الصفحه للتحميل.

$('input[name=date]').bind('change', function (){ 
validateDate(this);
});

});

function validateDate(element){

/ /يعمل عندما يكون محتوى 'عنصر' قد تم تغييره.

} </source>

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

Graceful degradation

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

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

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

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

انظر أيضا

المراجع

  1. ^ Keith، Jeremy (2006-06-20). Behavioral Separation.
  2. ^ Olsson، Tommy (2007-02-06). Graceful Degradation & Progressive Enhancement.
  3. ^ Crockford، Douglas (2007-01-24). The JavaScript Programming Language.
  4. ^ Crockford، Douglas (2006-11-27). Advanced JavaScript.
  5. ^ Crockford، Douglas (2006-10-20). An Inconvenient API: The Theory of the Dom.
  6. ^ Crockford، Douglas (2007-06-08). JavaScript: The Good Parts.
  7. ^ Quinsey، Peter. User-Proofing Ajax.

de:Unobtrusive JavaScript Unobtrusive JavaScript]] es:JavaScript no obstructivo fr:Javascript discret ru:Ненавязчивый JavaScript zh:Unobtrusive JavaScript