2011-05-27 10 views
5

मैं वास्तव में जावास्क्रिप्ट पर केंद्रित हूं और मेरी वेबसाइट के लिए प्रदर्शन में सुधार कर रहा हूं। एक चीज जो मैं अक्सर करता हूं, तत्वों को गतिशील रूप से बनाते हैं, और इन तत्वों को आईडी का उपयोग करके एक्सेस करते हैं।डोम या एचटीएमएल दस्तावेज़ में आईडी की आदर्श संख्या

शायद आप कुछ प्रश्नों के साथ मेरी मदद कर सकते हैं।

  1. दस्तावेज़ में हर दिलचस्प नोड को एक अद्वितीय आईडी देने के लिए प्रमुख ड्रॉ बैक क्या हैं?

  2. किसी दस्तावेज़ में आईडी की आदर्श संख्या क्या है?

  3. क्या दस्तावेज़ के लिए अधिकतम संख्या में आईडी हैं?

  4. प्रदर्शन के संदर्भ में, सीएसएस वर्ग द्वारा आईडी द्वारा प्राप्त करने की तुलना में धीमा हो रहा है?

आपके उत्तरों के लिए धन्यवाद दोस्तों। यदि आपके पास डोम के बारे में इन प्रश्नों के लिए कोई अतिरिक्त नोट्स हैं और उन्हें एक्सेस करना है, तो इसकी सराहना की जाएगी।

धन्यवाद।

+0

'दिलचस्प नोड' का उदाहरण क्या है? :) –

+0

Awesomely, gozzling "दिलचस्प नोड" लगभग पूरी तरह से "node.js" लिंक के साथ आबादी वाला एक पृष्ठ देता है! आपका जवाब है :) –

उत्तर

6

मुझे आईई, सफारी और क्रोम को "आईडी" मानों को बढ़ावा देने के अलावा window गुणों को बढ़ावा देने के अलावा उदारता से "आईडी" मानों का उपयोग करने का कोई वास्तविक जुर्माना नहीं है। हालांकि, अच्छा जावास्क्रिप्ट कोड उस से निपटने में सक्षम होना चाहिए।

ध्यान दें कि:

  • "आईडी" को महत्व देता चाहिए एक दस्तावेज़ (पेज) के भीतर पूरी तरह से अद्वितीय रखा जाना। एक से अधिक तत्वों के लिए एक ही "आईडी" मान का उपयोग करना ठीक नहीं है।
  • "आईडी" द्वारा लुकअप किसी अन्य माध्यम से लुकअप से कहीं अधिक तेज़ है।

आधुनिक ब्राउज़रों में, वर्ग द्वारा लुकअप बहुत तेजी से हो सकता है, लेकिन यह है कि केवल क्योंकि यह ऐसा करने का काम ब्राउज़र (संभवतः अधिक व्यापक आंतरिक डाटा संरचनाओं द्वारा समर्थित के निम्न स्तर के समर्थन कोड में डूबे हुए किया गया है, कैश, आदि)। अब सरल अर्थपूर्ण मार्कअप और क्लाइंट-साइड कोड द्वारा उपयोग के लिए कक्षा के नाम भी बहुत महत्वपूर्ण हैं, इसलिए मैं यह नहीं कह रहा हूं कि कक्षाएं खराब हैं या कुछ भी हैं। असल में ऐसे समय होते हैं जब विशेष रूप से "आईडी" द्वारा चीजें करना काफी बेवकूफ होगा, कक्षाओं का उपयोग करते समय सादगी शुरू होगी।

संपादित — अब तक (2013 के अंत) फ़ायरफ़ॉक्स window गुणों के साथ "आईडी" भी जिम्मेदार बताते हैं तत्वों के लिए बनाता है। :(

+1

मुझे लगता है कि विशेष रूप से नए jquery उपयोगकर्ताओं के साथ एक प्रवृत्ति दिखाई दे रही है, यह सोचने के लिए कि प्रत्येक तत्व के पास पहुंचने के लिए एक आईडी होना चाहिए। नेट पर बहुत से उदाहरण खराब हैं और हमेशा सुरक्षित सुरक्षा के रूप में आईडी का उपयोग करते हैं, इसलिए लोग उन तत्वों पर जावास्क्रिप्ट को गलती से नहीं चलाते हैं जिसका उनका मतलब नहीं था? क्या मैं अकेला हूं जिसने यह देखा है? –

+0

@ वेस्ले मर्च अच्छी तरह से, एसओ पर यहां एक संक्षिप्त अवधि भी खर्च करते हुए यह स्पष्ट करना चाहिए कि जावास्क्रिप्ट का उपयोग करने से बड़ी संख्या में लोगों द्वारा "प्रोग्रामिंग" नहीं माना जाता है। उन सभी सवालों के बारे में सोचें जो शुरू हो जाते हैं, "हाय मुझे अपने मालिक के लिए कुछ करने की ज़रूरत है, लेकिन मुझे जावास्क्रिप्ट बिल्कुल पता नहीं है ..."? मुझे अक्सर आश्चर्य होता है कि नेट पर कहीं ऐसी साइट है जहां संभावित पुल बिल्डर्स या हृदय सर्जन ऐसे प्रश्न पूछ सकते हैं। – Pointy

+1

मुझे यकीन है कि उनकी अपनी दुनिया में, बहुत सारे अनुभवहीन पुल बिल्डरों या सर्जन हैं जिन्होंने धारणाओं को गुमराह किया है या यह समझ में नहीं आता कि वे एक महान डिग्री के लिए क्या कर रहे हैं, लेकिन यह थोड़ा अलग है क्योंकि प्रवेश बाधा बहुत अधिक है । –

1
  1. वहाँ हर तत्व एक आईडी देने के लिए कोई कमियां मूल्य टकराव की संभावना के अलावा अन्य कर रहे हैं (और क्या Pointy साझा किया है)
  2. इससे कोई फर्क नहीं पड़ता कि आप कितने का उपयोग
  3. नहीं है किसी पृष्ठ पर आईडी के साथ कितने तत्व हो सकते हैं (ऊपर जैसा ही)
  4. चूंकि आईडी अद्वितीय है, यह तेज़ होगा - लेकिन आप कई मानों का उपयोग करने में सक्षम होने के वर्गों पर लाभ खो देंगे, या आवेदन कर रहे हैं कई तत्वों के लिए समान मान। उदाहरण के लिए, यदि आप कई आईडी सूचीबद्ध करने के बजाय कक्षा के नाम से एकाधिक तत्वों का चयन करने के लिए जावास्क्रिप्ट का उपयोग करना चाहते हैं।विशेष रूप से सीएसएस के लिए, गति वृद्धि आम तौर पर अनजान होगी।

आईडी के साथ तत्वों में कुछ अन्य गैर-जावास्क्रिप्ट से संबंधित फायदे भी हैं, जैसे तत्व को हाइपरलिंकिंग। आम तौर पर, मैं आईडी के साथ मार्कअप को कूड़ेदान से बचना पसंद करता हूं जब तक कि मुझे लगता है कि यह वास्तव में जरूरी नहीं है, उदाहरण के लिए: डेटाबेस से गतिशील सामग्री के साथ जो जावास्क्रिप्ट से बातचीत करने की आवश्यकता है।

अपनी प्रदर्शन चिंताओं को हल करने के लिए, यह दुर्लभ है कि एक अक्षम चयनकर्ता आपको महत्वपूर्ण समस्याएं देने जा रहा है। हालांकि ऑप्टिमाइज़ करना अच्छा है, मैं इस कारण के लिए एक आईडी का चयन कर सकता हूं कि हर तत्व देने के लिए मैं आपके रास्ते से बाहर नहीं जाऊंगा। अधिकांश प्रदर्शन समस्याएं अन्य चीजों के कारण होती हैं, जैसे AJAX अनुरोध करते समय धीमी डेटाबेस क्वेरीज़, या एक ही समय में कई एनिमेशन चलाते हैं, या सामान्य रूप से अक्षम अक्षम जावास्क्रिप्ट।

संबंधित मुद्दे