خيار الترحيل من jQuery إلى جافا سكريبت خالص

تم إنشاء مكتبة JQuery في عام 2006 لتعويض وظيفة جافا سكريبت المفقودة. منذ ذلك الحين ، تقدمت الأخيرة بشكل كافٍ في تطويرها بحيث يمكن للمطورين الاستغناء عن jQuery ، والمشكلة الرئيسية هي الأداء.



في حبري ، كانت هناك عدة مقالات ذات قياسات موضوعية لـ "تثبيط" JQuery على استعلامات الاختيار.
// jQuery 2.0 var c = $("#comments .comment"); 
4649 مللي ثانية
 // jQuery 2.0 var c = $(".comment"); 
3،437 مللي ثانية
 // native querySelectorAll var c = document.querySelectorAll("#comments .comment"); 
1،362 مللي ثانية
 // native querySelectorAll var c = document.querySelectorAll(".comment"); 
1168 مللي ثانية
 // native getElementById / getElementsByClassName var n = document.getElementById("comments"); var c = n.getElementsByClassName("comment"); 
107 مللي ثانية
 // native getElementsByClassName var c = document.getElementsByClassName("comment"); 
75 مللي ثانية
(يعمل في دورة 10000 مرة)

هناك الكثير من الأوصاف الجيدة لوظائف jQuery على Javascript-e على الشبكة - على سبيل المثال ، هنا .

لكن قوة jQuery تكمن في دقة وجمال تعابيرها. حتى أنه من الصعب نفسياً إعادة كتابة التعليمات البرمجية الموجودة ، وتغيير $ () الأنيق إلى الإنشاءات متعددة الأسطر.

دعونا نحاول ترك لغة JQuery إلى أقصى حد ممكن ، [جزئيًا] استبدالها بنفسها. للقيام بذلك ، نحتاج فقط إلى إعادة تعريف وظيفة $ () ، أو استبدال (أيهما أفضل) بوظيفتنا - فليكن $ jqr (). ستقوم أيضًا بإرجاع كائن ، ولكنه بالفعل "أصلي" وغير مثقل بوظائف jQuery التي لا نحتاجها.

مثال على الرمز:

 <html> <body> <p id="message"></p> </body> </html> 

كود المسج:

 $("#message").html("Hello world!"); 

التغييرات على:

 $jqr("#message").html("Hello world!"); // JQuery Replacement function $jqr(sel) { return new JQR(sel); } class JQR { constructor(sel) { this.sel = sel; this.elements = document.querySelectorAll(sel); } html(str) { for (var i = 0; i < this.elements.length; i++) { this.elements[i].innerHTML = str; } } } 

من المستحسن تحليل sel في مُنشئ الفئة من أجل استخدام querySelectorAll () و getElementsByClassName () و getElementById () بكفاءة أكبر.

وبالتالي ، يمكننا تنفيذ الوظائف التي نحتاجها فقط في فئة JQR ، دون تجاوز جافا سكريبت القياسي ودون لمس الكود الحالي كثيرًا.

ليس من الضروري حتى التخلص تمامًا من jQuery - سيؤدي التحسين الجزئي إلى نتيجة بالفعل.

Source: https://habr.com/ru/post/ar419471/


All Articles