PHPStorm IDE में अक्षम jQuery का उपयोग


100

मैंने हाल ही में PHPStorm IDE के अपने संस्करण को अपग्रेड किया है और अब यह मुझे अक्षम jQuery के उपयोग के बारे में चेतावनी देता है।

उदाहरण के लिए:

var property_single_location = $("#property [data-role='content'] .container");

इस चेतावनी का संकेत देता है:

जाँचता है कि jQuery के चयनकर्ताओं का उपयोग कुशल तरीके से किया जाता है। यह वंशगत चयनकर्ताओं को विभाजित करने का सुझाव देता है जो आईडी चयनकर्ता के साथ पूर्वनिर्मित होते हैं और डुप्लिकेट किए गए चयनकर्ताओं के बारे में चेतावनी देते हैं जिन्हें कैश किया जा सकता है।

तो मेरा सवाल है:

यह अक्षम क्यों है और उपरोक्त चयनकर्ता के लिए कुशल तरीका क्या है?

मुझे लगता है:

var property_single_location = $("#property").find("[data-role='content']").find(".container");

क्या यह सही तरीका है?

जवाबों:


156

मैं आज एक ही सवाल था और के लिए एक समाधान खोजने के लिए धन्यवाद करने में सक्षम था स्कॉट Kosman यहाँ

मूल रूप से उत्तर व्यक्तिगत रूप से आईडी का चयन करना है और फिर .find(...)नीचे कुछ भी उपयोग करना है। तो अपना उदाहरण लेते हुए:

$("#property [data-role='content'] .container");

इसे बदलने से PhpStorm खुश होता है और जाहिर तौर पर इससे दोगुना तेजी से बढ़ सकता है :

$("#property").find("[data-role='content'] .container");

1
मेरे स्वाद के लिए $ ('[data-role = "content"] .container', '#property'); अधिक पठनीय है।
n3rd

26
@ n3rd मजेदार, मुझे वह तरीका बिल्कुल भी पढ़ने में नहीं आता, लेकिन हर एक अपने खुद के कहने पर।
22

19

मेरा मानना ​​है कि jQuery और ब्राउज़रों के हाल के संस्करणों का उपयोग करने पर दोनों तरीकों के बीच अंतर नगण्य है। मैंने एक परीक्षण का निर्माण किया, जिससे पता चलता है कि अब आईडी पर चयन के बजाय एक संयुक्त चयनकर्ता करने के लिए वास्तव में 10% तेज है और फिर एक बहुत ही सरल मामले की तलाश करें:

http://jsperf.com/jquery-find-vs-insel

किसी भी गहराई से कक्षा में कई बच्चों के चयन के लिए, "खोज" तेजी से प्रकट होता है:

http://jsperf.com/jquery-find-vs-insel/7

JQuery के फ़ोरम पर इस बारे में कुछ चर्चा हुई थी, लेकिन इसके 3 साल पुराने: https://forum.jquery.com/topic/which-jquery-selection-is-efficient जैसा कि वे यहाँ इंगित करते हैं, अगर आप बहुत कुछ कर रहे हैं एक ही आईडी चयनकर्ता पर परिचालन, शीर्ष स्तर के तत्व को कैच करके सबसे बड़ा प्रदर्शन सुधार पाया जाता है। दूसरी ओर यदि आप केवल कुछ चयन कर रहे हैं, तो वस्तुतः कोई प्रदर्शन अंतर नहीं होगा।

इसके लिए मेरा मानना ​​है कि इंटेलीज इस कोड शैली के महत्व को कम कर रहा है।


4
अपने पहले परीक्षण में, आप प्रत्यक्ष डिकेडेंट ">" का उपयोग कर रहे हैं। मैंने आपका पहला परीक्षण ">" के बिना चलाया, और "खोज" का उपयोग तेज है। jsperf.com/jquery-find-vs-insel/12
beardedlinuxgeek

मुझे इस सबसे दिलचस्प बात यह लगती है कि सफारी के नवीनतम संस्करण प्रत्यक्ष विधि को लगभग 25% तेजी से संसाधित करते हैं। मुझे नहीं पता कि उन्होंने क्या किया है, लेकिन जाहिर है कि अन्य सभी ब्राउज़रों ने पकड़ा नहीं है।
Uxonith

14

पहला सवाल Alt + Enter को हिट करना है, और सूची में पहले टिप को चुनें, फिर Enter को हिट करें, आप देखेंगे कि यह सबसे कुशल तरीका क्या है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.