ما هي لغة الجافا سكريبت؟ الدليل الشامل 2021

الجافا سكريبت - الدليل الشامل 2021
جدول المحتويات

مرحبا بكم في دورة جافا سكريبت للمبتدئين MDN! في هذه المقالة سوف ننظر إلى جافا سكريبت من مستوى عال، والإجابة على أسئلة مثل “ما هو؟” و “ماذا يمكنك أن تفعل معها؟” ، والتأكد من أنك مرتاح مع الغرض جافا سكريبت.

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

ما هي الجافا سكريبت؟

جافا سكريبت هي لغة برمجة أو برمجة تسمح لك بتنفيذ ميزات معقدة على صفحات الويب – في كل مرة تقوم فيها صفحة ويب بأكثر من مجرد الجلوس هناك وعرض معلومات ثابتة لك للنظر إليها – عرض تحديثات المحتوى في الوقت المناسب ، والخرائط التفاعلية ، والرسومات المتحركة 2D / 3D ، والموسيقى الفيديو التمرير ، وما إلى ذلك – يمكنك الرهان على أن جافا سكريبت تشارك على الأرجح.

ما هي الجافا سكريبت؟
جافا سكريبت – المصدر: موزيلا
  • HTML هي لغة الترميز التي نستخدمها لهيكلة محتوى الويب الخاص بنا وإعطائه معنى، على سبيل المثال تحديد الفقرات والعناوين وجداول البيانات أو تضمين الصور ومقاطع الفيديو في الصفحة.
  • CSS هي لغة قواعد النمط التي نستخدمها لتطبيق التصميم على محتوى HTML الخاص بنا ، على سبيل المثال تحديد ألوان الخلفية والخطوط ، ووضع المحتوى الخاص بنا في أعمدة متعددة.
  • جافا سكريبت هي لغة البرمجة التي تمكنك من إنشاء تحديث المحتوى بشكل حيوي ، والتحكم في الوسائط المتعددة ، وتحريك الصور ، وإلى حد كبير كل شيء آخر. (حسنا ، ليس كل شيء ، ولكن من المدهش ما يمكنك تحقيقه مع بضعة أسطر من رمز جافا سكريبت.)

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

<p>Player 1: Chris</p>

ثم يمكننا إضافة بعض المغلق في هذا المزيج للحصول على أنها تبدو لطيفة :

p {
  font-family: 'helvetica neue', helvetica, sans-serif;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  border: 2px solid rgba(0,0,200,0.6);
  background: rgba(0,0,200,0.3);
  color: rgba(0,0,200,0.6);
  box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
  border-radius: 10px;
  padding: 3px 10px;
  display: inline-block;
  cursor: pointer;
}

وأخيرا ، يمكننا إضافة بعض جافا سكريبت لتنفيذ السلوك الديناميكي :

const para = document.querySelector('p');

para.addEventListener('click', updateName);

function updateName() {
  let name = prompt('Enter a new name');
  para.textContent = 'Player 1: ' + name;
}

حاول النقر على هذا الإصدار الأخير من تسمية النص لمعرفة ما سيحدث (لاحظ أيضا أنه يمكنك العثور على هذا العرض التوضيحي على GitHub – انظر الشفرة المصدرية، أو قم بتشغيلها مباشرة)!

جافا سكريبت يمكن أن تفعل أكثر من ذلك بكثير — دعونا استكشاف ما بمزيد من التفصيل.

المزيد: ما هي لغة SQL؟

فماذا يمكن أن تفعل حقا؟

تتكون لغة جافا سكريبت JavaScript الأساسية من جانب العميل من بعض ميزات البرمجة الشائعة التي تسمح لك بالقيام بأشياء مثل:

  • تخزين القيم المفيدة داخل المتغيرات. في المثال أعلاه على سبيل المثال، نطلب اسم جديد ليتم إدخاله ثم تخزين هذا الاسم في متغير يسمى .name
  • العمليات على أجزاء من النص (تعرف باسم “سلاسل” في البرمجة). في المثال أعلاه نأخذ السلسلة “لاعب 1: ” والانضمام إلى المتغير لإنشاء تسمية النص الكامل، على سبيل المثال ”لاعب 1: كريس”.name
  • تشغيل التعليمات البرمجية استجابة لأحداث معينة تحدث على صفحة ويب. استخدمنا حدثا في المثال أعلاه للكشف عن وقت النقر فوق الزر ثم تشغيل التعليمات البرمجية التي تقوم بتحديث تسمية النص.
  • وأكثر من ذلك بكثير!

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

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

وهي تندرج عموما في فئتين.

جافا سكريبت - واجهات برمجة التطبيقات
جافا سكريبت – المصدر: موزيلا

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

  • DOM (نموذج كائن المستند) API يسمح لك لمعالجة HTML و CSS، وخلق وإزالة وتغيير HTML، وتطبيق أنماط جديدة ديناميكيا على الصفحة الخاصة بك، الخ. في كل مرة تشاهد فيها نافذة منبثقة تظهر على صفحة ، أو بعض المحتوى الجديد المعروض (كما رأينا أعلاه في عرضنا التوضيحي البسيط) على سبيل المثال ، هذا هو DOM قيد التنفيذ.
  • تقوم واجهة برمجة التطبيقات لتحديد الموقع الجغرافي باسترداد المعلومات الجغرافية. هذه هي الطريقة التي يمكن بها لخرائط Google العثور على موقعك ورسمه على الخريطة.
  • تسمح لك واجهات برمجة التطبيقات القماشية وWebGL بإنشاء رسومات متحركة ثلاثية الأبعاد و2D. يقوم الأشخاص ببعض الأشياء المدهشة باستخدام تقنيات الويب هذه – انظر تجارب Chrome و webglsamples.
  • واجهات برمجة التطبيقات الصوت والفيديو مثل HTMLMediaElement وWebRTC تسمح لك أن تفعل أشياء مثيرة للاهتمام حقا مع الوسائط المتعددة، مثل تشغيل الصوت والفيديو الحق في صفحة ويب، أو انتزاع الفيديو من كاميرا الويب الخاصة بك وعرضه على جهاز كمبيوتر شخص آخر (حاول لدينا عرض لقطة بسيطة للحصول على هذه الفكرة).

ملاحظة: لن تعمل العديد من العروض التوضيحية المذكورة أعلاه في متصفح قديم – عند إجراء التجارب ، من الجيد استخدام متصفح حديث مثل Firefox أو Chrome أو Edge أو Opera لتشغيل التعليمات البرمجية الخاصة بك. سوف تحتاج إلى النظر في اختبار عبر المتصفح بمزيد من التفصيل عندما تقترب من تقديم رمز الإنتاج (أي رمز حقيقي أن العملاء الحقيقيين سوف تستخدم).

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

ملاحظة: واجهات برمجة التطبيقات هذه متقدمة، ولن نغطي أيا من هذه في هذه الوحدة

هناك الكثير من المتاحة، أيضا! ومع ذلك ، لا تحصل على أكثر من متحمس فقط حتى الآن. لن تتمكن من إنشاء فيسبوك أو خرائط Google أو Instagram بعد دراسة جافا سكريبت لمدة 24 ساعة – هناك الكثير من الأساسيات التي يجب تغطيتها أولا. ولهذا السبب أنت هنا – دعونا نمضي قدما!

المزيد: ما هي لغة البايثون؟ إيجابياتها وسلبياتها

ماذا تفعل جافا سكريبت على صفحتك؟

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

دعونا باختصار خلاصة قصة ما يحدث عند تحميل صفحة ويب في متصفح. عند تحميل صفحة ويب في المستعرض الخاص بك، فإنك تقوم بتشغيل التعليمات البرمجية (HTML و CSS و JavaScript) داخل بيئة تنفيذ (علامة تبويب المستعرض). هذا هو مثل المصنع الذي يأخذ في المواد الخام (رمز) والمخرجات منتج (صفحة ويب).

ماذا تفعل جافا سكريبت على صفحتك؟
المصدر: موزيلا

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

أمان المستعرض

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

ملاحظة: هناك طرق لإرسال التعليمات البرمجية والبيانات بين مواقع الويب /علامات التبويب المختلفة بطريقة آمنة ، ولكن هذه تقنيات متقدمة لن نغطيها في هذه الدورة التدريبية.

جافا سكريبت – تشغيل النظام

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

const para = document.querySelector('p');

para.addEventListener('click', updateName);

function updateName() {
  let name = prompt('Enter a new name');
  para.textContent = 'Player 1: ' + name;
}

هنا نحن تحديد فقرة النص (السطر 1)، ثم إرفاق مستمع الحدث إليها (السطر 3) بحيث عندما يتم النقر فوق الفقرة، يتم تشغيل كتلة التعليمات البرمجية (خطوط 5-8). كتلة التعليمات البرمجية (تسمى هذه الأنواع من كتل التعليمات البرمجية القابلة لإعادة الاستخدام “دالات”) يطلب من المستخدم اسما جديدا، ثم إدراج هذا الاسم في الفقرة لتحديث العرض.updateName()updateName()

إذا قمت بتبديل ترتيب السطرين الأولين من التعليمات البرمجية، فلن يعمل بعد ذلك – بدلا من ذلك، ستحصل على خطأ تم إرجاعه في وحدة تحكم مطور المستعرض – . وهذا يعني أن الكائن غير موجود بعد، لذلك لا يمكننا إضافة مستمع حدث إليه.TypeError: para is undefinedpara

ملاحظة: هذا خطأ شائع جدا — يجب أن تكون حذرا من وجود الكائنات المشار إليها في التعليمات البرمجية الخاصة بك قبل محاولة القيام بأشياء لها.

تفسير مقابل تعليمات برمجية مترجمة

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

يتم تحويل اللغات المترجمة من ناحية أخرى (المترجمة) إلى نموذج آخر قبل تشغيلها بواسطة الكمبيوتر. على سبيل المثال، C/C++ يتم تحويلها برمجيا إلى رمز الجهاز الذي يتم تشغيله بعد ذلك بواسطة الكمبيوتر. يتم تنفيذ البرنامج من تنسيق ثنائي، الذي تم إنشاؤه من التعليمات البرمجية المصدر للبرنامج الأصلي.

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

هناك مزايا لكلا النوعين من اللغة، لكننا لن نناقشها الآن.

التعليمات البرمجية من جانب الخادم مقابل التعليمات البرمجية من جانب العميل

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

يتم تشغيل التعليمات البرمجية من جانب الخادم من ناحية أخرى على الخادم، ثم يتم تحميل نتائجها وعرضها في المستعرض. أمثلة من شعبية من جانب الخادم لغات الويب تشمل بي إتش بي ، بيثون ، روبي ، ASP.NET و… جافا سكريبت! يمكن استخدام جافا سكريبت أيضا كلغة من جانب الخادم، على سبيل المثال في بيئة Node.js الشائعة – يمكنك معرفة المزيد عن جافا سكريبت من جانب الخادم في موقعنا الديناميكي

التعليمات البرمجية الديناميكية مقابل الثابتة

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

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

المزيد: ما هي لغة الجافا؟

كيف يمكنك إضافة جافا سكريبت إلى صفحتك؟

يتم تطبيق جافا سكريبت على صفحة HTML بطريقة مماثلة ل CSS. في حين يستخدم CSS < الارتباط> العناصر لتطبيق أوراق الأنماط الخارجية والأنماط <> لتطبيق أوراق الأنماط الداخلية على HTML، يحتاج JavaScript إلى صديق واحد فقط في عالم HTML – <script>element. دعونا نتعلم كيف يعمل هذا.

جافا سكريبت داخلي

  1. أولا وقبل كل شيء، وجعل نسخة محلية من ملف مثال لدينا تطبيق جافا سكريبت.html. حفظه في دليل في مكان معقول.
  2. افتح الملف في مستعرض الويب وفي محرر النص. سترى أن HTML ينشئ صفحة ويب بسيطة تحتوي على زر قابل للنقر.
  3. بعد ذلك، انتقل إلى محرر النصوص وأضف ما يلي في رأسك — قبل علامة الإغلاق مباشرة: </head><script> // JavaScript goes here </script>
  4. الآن سنقوم بإضافة بعض جافا سكريبت داخل <سكريبت>للتي تجعل الصفحة تفعل شيئا أكثر إثارة للاهتمام – إضافة التعليمات البرمجية التالية فقط تحت سطر “/ جافا سكريبت يذهب هنا”:document.addEventListener("DOMContentLoaded", function() { function createParagraph() { let para = document.createElement('p'); para.textContent = 'You clicked the button!'; document.body.appendChild(para); } const buttons = document.querySelectorAll('button'); for(let i = 0; i < buttons.length ; i++) { buttons[i].addEventListener('click', createParagraph); } });
  5. حفظ الملف وتحديث المتصفح — الآن يجب أن ترى أنه عند النقر فوق الزر، يتم إنشاء فقرة جديدة ووضعها أدناه.

ملاحظة: إذا كان المثال الخاص بك لا يبدو للعمل، انتقل من خلال الخطوات مرة أخرى والتحقق من أن فعلت كل شيء بشكل صحيح. هل حفظت نسختك المحلية من رمز البدء كملف؟ هل أضفت <>يضم قبل العلامة مباشرة؟ هل أدخلت جافا سكريبت تماما كما هو موضح؟ جافا سكريبت حساسة لحالة الأحرف ، وضجة جدا ، لذلك تحتاج إلى إدخال بناء الجملة تماما كما هو مبين ، وإلا فإنه قد لا يعمل..html</head>

جافا سكريبت خارجي

هذا يعمل بشكل رائع ، ولكن ماذا لو أردنا وضع جافا سكريبت في ملف خارجي؟ دعونا نستكشف هذا الآن.

  1. أولا، إنشاء ملف جديد في نفس الدليل مثل ملف HTML عينة. سمها — تأكد من أن لديها هذا .js ملحق اسم الملف، كما أن هذه هي الطريقة التي يتم التعرف عليها كما جافا سكريبت.script.js
  2. استبدال < الحالي>element بما يلي:<script src="script.js" defer></script>
  3. داخل ، أضف البرنامج النصي التالي: script.jsfunction createParagraph() { let para = document.createElement('p'); para.textContent = 'You clicked the button!'; document.body.appendChild(para); } const buttons = document.querySelectorAll('button'); for(let i = 0; i < buttons.length ; i++) { buttons[i].addEventListener('click', createParagraph); }
  4. حفظ وتحديث المتصفح الخاص بك، ويجب أن ترى الشيء نفسه! انها تعمل فقط نفس الشيء ، ولكن الآن لدينا جافا سكريبت في ملف خارجي. هذا هو عموما شيء جيد من حيث تنظيم التعليمات البرمجية الخاصة بك وجعلها قابلة لإعادة الاستخدام عبر ملفات HTML متعددة. بالإضافة إلى ذلك ، فإن HTML أسهل في القراءة دون إلقاء أجزاء ضخمة من السيناريو فيه.

معالجات جافا سكريبت المضمنة

لاحظ أنه في بعض الأحيان سوف تأتي عبر بت من رمز جافا سكريبت الفعلية التي تعيش داخل HTML. قد تبدو شيئا من هذا القبيل :

function createParagraph() {
  let para = document.createElement('p');
  para.textContent = 'You clicked the button!';
  document.body.appendChild(para);
}
<button onclick="createParagraph()">Click me!</button>

يمكنك تجربة هذا الإصدار من العرض التوضيحي أدناه.

يحتوي هذا العرض التوضيحي على نفس الوظيفة تماما كما في المقطعين السابقين، باستثناء أن <الزر>element يتضمن معالج مضمن لجعل الدالة تعمل عند الضغط على الزر.onclick

من فضلك لا تفعل هذا، ومع ذلك. من الممارسات السيئة تلويث HTML الخاص بك مع جافا سكريبت ، وهو غير فعال – يجب عليك تضمين السمة على كل زر تريد أن ينطبق عليه جافا سكريبت.onclick="createParagraph()"

المزيد: 11 من اسهل لغات البرمجة للمبتدئين

استخدام قائمة الإضافة بدلا من ذلك

بدلا من جافا سكريبت بما في ذلك في HTML الخاص بك ، استخدم بناء جافا سكريبت نقية. في هذه الحالة تسمح لك الدالة بتحديد جميع الأزرار باستخدام تعليمات واحدة. التعليمات البرمجية التي استخدمناها أعلاه لخدمة هذا الغرض تبدو كما يلي:addEventListener()

const buttons = document.querySelectorAll('button');

for(let i = 0; i < buttons.length ; i++) {
  buttons[i].addEventListener('click', createParagraph);
}

قد يكون هذا أطول قليلا من السمة، ولكنه سيعمل لجميع الأزرار — بغض النظر عن عدد الأزرار الموجودة على الصفحة، ولا عدد الأزرار التي تمت إضافتها أو إزالتها. جافا سكريبت لا تحتاج إلى تغيير.onclick

ملاحظة: حاول تحرير الإصدار الخاص بك وإضافة بضعة أزرار أخرى إلى الملف. عند إعادة تحميل، يجب أن تجد أن كافة الأزرار عند النقر فوق سيتم إنشاء فقرة. أنيق، هاه؟apply-javascript.html

استراتيجيات تحميل البرامج النصية

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

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

في المثال الداخلي، يمكنك مشاهدة هذه البنية حول التعليمات البرمجية:

document.addEventListener("DOMContentLoaded", function() {
  ...
});

هذا هو مستمع الحدث، الذي يستمع إلى الحدث “DOMContentLoaded” في المستعرض، مما يدل على أن يتم تحميل النص الأساسي HTML تماما وتحليلها. لن يتم تشغيل جافا سكريبت داخل هذه الكتلة إلا بعد تشغيل هذا الحدث، وبالتالي يتم تجنب الخطأ.

في المثال الخارجي، نستخدم ميزة جافا سكريبت أكثر حداثة لحل المشكلة، السمة، التي تخبر المتصفح بمواصلة تنزيل محتوى HTML بمجرد الوصول إلى عنصر العلامة.defer<script>

<script src="script.js" defer></script>

في هذه الحالة سيتم تحميل كل من البرنامج النصي و HTML في وقت واحد وسوف تعمل التعليمات البرمجية.

ملاحظة: في الحالة الخارجية، لم نكن بحاجة إلى استخدام الحدث لأن السمة حل المشكلة بالنسبة لنا. لم نستخدم الحل لمثال JavaScript الداخلي لأنه يعمل فقط للنصوص الخارجية.DOMContentLoadeddeferdeferdefer

حل من الطراز القديم لهذه المشكلة تستخدم لوضع عنصر البرنامج النصي الخاص بك الحق في الجزء السفلي من الجسم (على سبيل المثال قبل العلامة)، بحيث سيتم تحميل بعد تحليل جميع HTML. المشكلة مع هذا الحل هو أن تحميل/ تحليل البرنامج النصي محظورة تماما حتى يتم تحميل DOM HTML. على المواقع الكبيرة التي بها الكثير من جافا سكريبت، يمكن أن يسبب ذلك مشكلة كبيرة في الأداء، مما يؤدي إلى إبطاء موقعك.</body>

عدم التزامن والتأجيل

هناك في الواقع اثنين من الميزات الحديثة التي يمكن أن نستخدمها لتجاوز مشكلة النصي حجب — و (والتي رأينا أعلاه). دعونا ننظر إلى الفرق بين هذين الاثنين.asyncdefer

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

سيتم تحميل البرامج النصية المحملة بالسمة بالترتيب الذي تظهر به على الصفحة. لن يتم تشغيلها حتى يتم تحميل محتوى الصفحة بالكامل ، وهو أمر مفيد إذا كانت البرامج النصية تعتمد على وجود DOM في مكانه (على سبيل المثال ، تعديل عنصر واحد أو أكثر على الصفحة).defer

هنا هو تمثيل مرئي من أساليب تحميل البرنامج النصي المختلفة وماذا يعني ذلك لصفحاتك:

جافا سكريبت - عدم التزامن والتأجيل
المصدر 1: html.spec.whatwg.org المصدر 2: موزيلا

هذه الصورة هي من المواصفات HTML، نسخها واقتصاصها إلى نسخة مخفضة ، تحت CC BY 4.0 شروط الترخيص.

على سبيل المثال، إذا كان لديك عناصر البرنامج النصي التالية:

<script async src="js/vendor/jquery.js"></script>

<script async src="js/script2.js"></script>

<script async src="js/script3.js"></script>

لا يمكنك الاعتماد على الترتيب الذي سيتم تحميل البرامج النصية فيه. قد تحميل قبل أو بعد وإذا كان هذا هو الحال، أي وظائف في تلك البرامج النصية اعتمادا على سوف تنتج خطأ لأنه لن يتم تعريف في الوقت الذي يعمل البرنامج النصي.jquery.jsscript2.jsscript3.jsjqueryjquery

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

سيتم تشغيل البرامج النصية المحملة باستخدام السمة (انظر أدناه) بالترتيب الذي تظهر به في الصفحة وتنفيذها بمجرد تنزيل البرنامج النصي والمحتوى:defer

<script defer src="js/vendor/jquery.js"></script>

<script defer src="js/script2.js"></script>

<script defer src="js/script3.js"></script>

في المثال الثاني، يمكننا التأكد من أن سيتم تحميل قبل وأن سيتم تحميل قبل . لن يتم تشغيلها حتى يتم تحميل محتوى الصفحة بالكامل ، وهو أمر مفيد إذا كانت البرامج النصية تعتمد على وجود DOM في مكانه (على سبيل المثال ، تعديل أحد العناصر الأكثر على الصفحة).jquery.jsscript2.jsscript3.jsscript2.jsscript3.js

لتلخيص:

  • async وكليهما يرشد المتصفح إلى تنزيل البرنامج النصي (البرامج النصية) في مؤشر ترابط منفصل، بينما يتم تنزيل بقية الصفحة (DOM، إلخ)، بحيث لا يتم حظر تحميل الصفحة أثناء عملية الجلب.defer
  • سيتم تنفيذ البرامج النصية ذات السمة بمجرد الانتهاء من التنزيل. هذا بحظر الصفحة ولا يضمن أي أمر تنفيذ محدد.async
  • سيتم تحميل البرامج النصية مع سمة بالترتيب الذي هم فيه وسيتم تنفيذها فقط بمجرد الانتهاء من تحميل كل شيء.defer
  • إذا كان يجب تشغيل البرامج النصية الخاصة بك فورا وليس لديهم أي تبعيات، فاستخدم .async
  • إذا كانت البرامج النصية الخاصة بك بحاجة إلى الانتظار لتحليل وتعتمد على البرامج النصية الأخرى و / أو DOM يجري في مكان، تحميلها باستخدام ووضع العناصر المقابلة لها في الترتيب الذي تريد المستعرض لتنفيذها.defer<script>

المزيد: ما هي قاعدة البيانات وأنواعها

التعليقات

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

  • تتم كتابة تعليق سطر واحد بعد شرطة مائلة مزدوجة للأمام (/)، على سبيل المثال.// I am a comment
  • تتم كتابة تعليق متعدد الأسطر بين السلاسل /* و */، على سبيل المثال./* I am also a comment */

على سبيل المثال ، يمكننا التعليق التوضيحي لجافا سكريبت التجريبي الأخير بتعليقات مثل:

// Function: creates a new paragraph and appends it to the bottom of the HTML body.

function createParagraph() {
  let para = document.createElement('p');
  para.textContent = 'You clicked the button!';
  document.body.appendChild(para);
}

/*
  1. Get references to all the buttons on the page in an array format.
  2. Loop through all the buttons and add a click event listener to each one.

  When any button is pressed, the createParagraph() function will be run.
*/

const buttons = document.querySelectorAll('button');

for (let i = 0; i < buttons.length ; i++) {
  buttons[i].addEventListener('click', createParagraph);
}

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

المزيد: ما هو الهجوم السيبراني أو الإلكتروني؟

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

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

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

المصدر: موزيلا

شارك المقال:

مقالات ذات صلة

0 0 تصويتات
قيم المقالة
guest
0 تعليقات
Inline Feedbacks
عرض جميع التعليقات