# جي كويري

جي كويري (بالإنجليزية: jQuery)‏ هي مكتبة خاصة بالجافا سكريبت، تختصر العديد من النصوص البرمجية المكررة والمهام المعروفة، وذلك لتسهيل عملية البرمجة. جي كويري برمجية حرة مفتوحة المصدر مرخصة تحت رخصتي إم آي تي وجي بي إل.
تهدف مكتبة جي كويري إلى تبسيط الأكواد البرمجية للغة إتش تي إم إل الخاصة والجافا سكريبت، وكذلك التعامل مع التنسيقات المختلفة بلغة سي إس إس. تعتبر مكتبة جي كويري مكتبة مجانية مفتوحة المصدر تستخدم رخصة MIT المسموح بها. اعتبارًا من مايو 2019، تم استخدام جي كويري بواسطة 73٪ من مواقع الويب العشرة ملايين الأكثر شهرة. يشير تحليل الويب إلى أنها مكتبة جافا سكريبت الأكثر انتشارًا وفارق كبير مع المكتبات الأخرى، ولها على الأقل 3 إلى 4 مرات استخدام أكثر من أي مكتبة جافا سكريبت أخرى.
تم تصميم بناء جملة جي كويري لتسهيل التنقل في مستند، وتحديد عناصر التعديل عليه، وإنشاء رسوم متحركة، ومعالجة الأحداث، وتطوير تطبيقات أجاكس. يوفر جي كويري أيضًا إمكانات للمطورين لإنشاء مكونات إضافية على مكتبة جافا سكريبت. يتيح ذلك للمطورين إنشاء تجريدات للتفاعلات منخفضة المستوى والرسوم المتحركة والتأثيرات المتقدمة وعناصر واجهة المستخدم عالية المستوى والقابلة للتخصيص. يتيح الأسلوب المعياري لمكتبة جي كويري إنشاء صفحات ويب ديناميكية قوية وتطبيقات ويب.
مجموعة ميزات جي كويري الأساسية - بدءاً من تحديدات عناصر التعديل على الوثيقة، والاجتياز والمعالجة - التي تم تمكينها بواسطة محرك المحدد (المسمى «سيزل» من الإصدار 1.3)، خلقت «نمط برمجة» جديدًا، بدمج الخوارزميات وهياكل بيانات الوثيقة. أثر هذا النمط على بنية أطر عمل جافا سكريبت الأخرى، مما أدى لاحقًا إلى تحفيز إنشاء واجهة برمجة تطبيقات قياسية. لاحقًا، تم تحسين هذا النمط من خلال دمج أعمق للبيانات والخوارزمية في وريث جي كويري.
تدعم مايكروسوفت ونوكيا حزم جي كويري على منصتيهما. فتقوم مايكروسوفت بتضمينه مع فيجوال ستوديو لاستخدامه ضمن إطار عمل «ايه إس بي دوت نت لتطوير المواقع» بينما قامت نوكيا بدمجه في منصة تطوير أدوات ويب رن تايم.

## الإصدارات

| الإصدار | الإصدار الأولي | اخر تحديث | الحجم المصغر (كيلو بايت) | ملاحظات إضافية |
| 1.0 | 26 أغسطس 2006 | | | أول إصدار مستقر |
| 1.1 | 14 يناير 2007 | | | |
| 1.2 | 10 سبتمبر 2007 | 1.2.6 | 54.5 | |
| 1.3 | 14 يناير 2009 | 1.3.2 | 55.9 | تم إدخال محرك سيزل في القلب |
| 1.4 | 14 يناير 2010 | 1.4.4 | 76.7 | |
| 1.5 | 31 يناير 2011 | 1.5.2 | 83.9 | إدارة رد الاتصال المؤجل، إعادة كتابة وحدة أجاكس |
| 1.6 | 3 مايو 2011 | 1.6.4 | 89.5 | تحسينات كبيرة في الأداء لوظائف attr و val |
| 1.7 | 3 نوفمبر 2011 | 1.7.2 (21 مارس 2012) | 92.6 | واجهات برمجة تطبيقات الأحداث الجديدة: .on و.off، بينما لا تزال واجهات برمجة التطبيقات القديمة مدعومة. |
| 1.8 | 9 أغسطس 2012 | 1.8.3 (13 نوفمبر 2012) | 91.4 | تمت إعادة كتابة محرك سيزل وتحسين الرسوم المتحركة ومرونة الحركة. |
| 1.9 | 15 يناير 2013 | 1.9.1 (4 فبراير 2013) | 90.5 | إزالة الواجهات المهملة وتنظيف الكود |
| 1.10 | 24 مايو 2013 | 1.10.2 (3 يوليو 2013) | 90.9 | تم الإبلاغ عن إصلاحات الأخطاء والاختلافات المدمجة من كل من دورات بيتا 1.9 و 2.0 |
| 1.11 | 24 يناير 2014 | 1.11.3 (28 أبريل 2015) | 93.7 | |
| 1.12 | 8 يناير 2016 | 1.12.4 (20 مايو 2016) | 94.9 | |
| 2.0 | 18 أبريل 2013 | 2.0.3 (3 يوليو 2013) | 81.7 | تم إسقاط دعم انترنت اكسبلورر 6-8 لتحسين الأداء وتقليل حجم الملف |
| 2.1 | 24 يناير 2014 | 2.1.4 (28 أبريل 2015) | 82.4 | |
| 2.2 | 8 يناير 2016 | 2.2.4 (20 مايو 2016) | 83.6 | |
| 3.0 | 9 يونيو 2016 | 3.0.0 (9 يونيو 2016) | 84.3 | الوعود / A + دعم المؤجلة، $ .ajax و $ .when .data متوافق مع HTML5 |
| 3.1 | 7 يوليو 2016 | 3.1.1 (23 سبتمبر 2016) | 84.7 | تمت إضافة جمل الاستثناءات (بالإنجليزية: jQuery.readyException)، لم يتم إسكات أخطاء المعالج الجاهز الآن، بينما ماسك الأخطاء (بالإنجليزية:ready handler errors) ما زال قيد العمل |
| 3.2 | 16 آذار (مارس) 2017 | 3.2.1 (20 مارس 2017) | 84.6 | إضافة دعم لاسترجاع محتويات <template>العناصر، وإهمال الطرق القديمة المختلفة. |
| 3.3 | 19 يناير 2018 | 3.3.1 (20 يناير 2018) | 84.9 | إهمال الوظائف القديمة، الوظائف التي تقبل الفئات الآن تدعمها أيضًا في تنسيق المصفوفة. |
| 3.4 | 10 أبريل 2019 | 3.4.1 (1 مايو 2019) | 86.1 | تحسينات الأداء، تم دعم nonceو nomodule. |
| 3.5 | 10 أبريل 2020 | 3.5.1 (4 مايو 2020) | 87.4 | الإصلاحات الأمنية والطرق مثل .evenو .odd و jQuery.trim تم إهمالها. |

## تاريخ

انشئت جي كويري في يناير 2006 في باركامب -نيويورك، من قبل جون ريسج متأثرة بمكتبة كويري لديان إدوارد السابقة (cssQuery). حاليًا تتبع فريق من المطورين بقيادة تيمي ويلسون (لمحرك محددات جي كويري Sizzle، بقيادة ريتشارد جيبسون).
تم ترخيص جي كويري في الأصل بموجب رخصة CC BY-SA 2.5، وتم إعادة ترخيصه إلى رخصة MIT في عام 2006. وفي نهاية عام 2006، تم ترخيصه بموجب رخصة جنو العمومية و MIT. نظرًا لأن هذا أدى إلى بعض الالتباس، تم إسقاط رخصة GPL في عام 2012 وهو الآن مرخص فقط بموجب ترخيص MIT.

### الشهرة

* في عام 2015، تم استخدام جي كويري على 62.7٪ من أفضل مليون موقع ويب (وفقًا لموقع BuiltWith)، و 17٪ من جميع مواقع الإنترنت.
* في عام 2017، تم استخدام جي كويري على 69.2٪ من أفضل مليون موقع (وفقًا لموقع Libscore).
* في عام 2018، تم استخدام جي كويري على 78٪ من أفضل مليون موقع.
* في عام 2019، تم استخدام جي كويري على 80٪ من أفضل مليون موقع ويب (وفقًا لموقع BuiltWith)، و 74.1٪ من أفضل 10 ملايين (وفقًا لموقع W3Techs).
* اعتبارًا من فبراير 2020، يتم استخدام جي كويري بواسطة 74.4٪ من أفضل 10 ملايين موقع ويب (وفقًا لموقع W3Techs)

## مكونات الجي كويري

* النواة (core) ويستخدم نواة الجافاسكربت.
* الاختيار (selectors) ومهمتها اختيارالعناصر.
* الأحداث (events) المسئولة عن عمليات الاكشن -حدث- عند الاختيار بالماوس ولوحة المفاتيح والفتح والاغلاق.
* أجاكس (AJAX) المسئول عن التفاعل مع السيرفر.
* التأثيرات (Effects) وهي الحركات التي يتم عملها علي محتويات الموقع.

## مميزات الجي كويري

* أنها مكتوبة فقط بلغة جافاسكربت.
* أنها خارجية -مكتوبة من طرف ثالث- وحجمها قليل 196 كيلوبايت.
* سهلة اختيار العناصر في صفحة اتش تي إم إل.
* مفتوحة المصدر.
* القدرة على العمل مع المكتبات الأخرى.
* عمل التأثيرات الحركية على موقع الويب.
* توفر كم هائل من الإضافات plugins التي تعمل بالاعتماد عليها.

## الواجهة
### الوظائف

يوفر jQuery نوعين من روتين فرعي، وظائف أداة ثابتة و jQuery طرق كائن. لكل منها أسلوب الاستخدام الخاص به.
يتم الوصول إلى كليهما من خلال المعرف الرئيسي لـ jQuery: jQuery . هذا المعرف له اسم مستعار اسمه $ . يمكن الوصول إلى جميع الوظائف من خلال أي منهما من هذين الاسمين.

#### طرق jQuery

وظيفة jQuery هي (Factory method pattern | factory) لإنشاء كائن jQuery يمثل عقد DOM واحدًا أو أكثر. تحتوي كائنات jQuery على طرق للتعامل مع هذه العقد. هذه الطرق (تسمى أحيانًا أوامر) ، هي قابل للتسلسل حيث تقوم كل طريقة أيضًا بإرجاع كائن jQuery.
يبدأ الوصول إلى عُقد DOM المتعددة ومعالجتها في jQuery عادةً باستدعاء الدالة $ بسلسلة CSS selector. يؤدي هذا إلى إرجاع كائن jQuery يشير إلى جميع العناصر المطابقة في صفحة لغة توصيف النص الفائق. $ ("div.test") ، على سبيل المثال، يعرض كائن jQuery مع جميع عناصر div للفئة اختبار . يمكن معالجة مجموعة العقد هذه عن طريق استدعاء توابع على كائن jQuery المُعاد.