CSS सिंटेक्स दो कारणों के लिए भयानक है:
- यह तेजी से परिमाण के एक आदेश और कम संसाधन और अधिक जटिल XPath से गहन है।
- जब आप को एक सीएसएस चयनकर्ता के साथ मिलना चाहते हैं, तो एक समान XPath क्वेरी ऐसा करने के लिए अधिकतर समय अधिक पढ़ने और पढ़ने के लिए कठिन होगा।
बिंदु में
मामला: इस सीएसएस चयनकर्ता ले: h1.header > a[rel~="author"]
इसका कम से कम कार्यात्मक XPath बराबर//h1[contains(" "+normalize-space(@class)+" "," header ")]/a[contains(" "+normalize-space(@rel)+" "," author ")]
... जो दोनों बहुत कठिन पढ़ना और लिखना है किया जाएगा।
आप के बजाय इस XPath लिखा है: जैसे <h1 class="article header"><a rel="author external" href="/mike">...</a></h1>
//h1[@class="header"]/a[@rel="author"]
... आप गलत तरीके से याद किया है | मार्कअप जब आप वास्तव में जरूरत XPath है, हालांकि, यह एकमात्र विकल्प है, जब तक आप के आसपास चलने के लिए चाहते हैं कोड के साथ मैन्युअल रूप से डोम (जो घृणित तेज़ हो जाता है)।
व्यक्तिगत रूप से (और मैं Greasemonkey के रखरखाव में से एक हूं), मैं अपने सभी नोड स्लाइसिंग आवश्यकताओं के लिए बहुत छोटी on.js
लाइब्रेरी का उपयोग करता हूं - जो मुझे XPath दोनों के संयोजन (जब मुझे इसकी आवश्यकता होती है), और सीएसएस (जो मैं लगभग हर समय उपयोग करता हूं) - अधिकांशतः क्योंकि यह मुझे उन सभी कोड को अलग करने देता है जो पृष्ठ के कुछ हिस्सों को खोदने से संबंधित हैं, मुझे स्क्रिप्ट हेडर में पचाने की ज़रूरत है, इसलिए मेरा कोड उन सभी चीजों को पूरा करता है जो इसकी जरूरत है, और वास्तव में वेब पृष्ठों पर मजेदार या महान चीजें करने के बारे में सब कुछ हो सकता है।
वेब ब्राउज़र को जावास्क्रिप्ट को वास्तव में तेज़ चलाने के लिए बहुत अधिक अनुकूलित किया गया है, और यदि मैं आप थे तो मैं डेवलपर के रूप में जो भी आपको सबसे कुशल और खुश करता हूं, उसका उपयोग करने की सलाह दूंगा, ब्राउज़र ब्राउज़र को कम से कम कोड चलाता है। विशेष रूप से on.js
के साइड लाभों में से एक यह है कि यह स्वचालित रूप से स्क्रिप्ट्स को अक्सर चलाने में सहायता करता है, उन पृष्ठों पर जहां नोड्स सोचा आसपास थे, को पृष्ठ को नष्ट करने के बजाय, बाहर निकलें ।
क्या वे दो पूरी तरह से अलग चीजें नहीं हैं? मैंने सोचा कि क्वेरी चयनकर्ता सीएसएस चयनकर्ताओं के लिए था और XPath एक्सएमएल नोड्स/विशेषताओं के लिए है। –
दोनों सीएसएस और एक्सपीएथ चयनकर्ता डीओएम पर काम करते हैं, और जैसे ही एक्सएमएल और एचटीएमएल दस्तावेजों को दस्तावेज़ ऑब्जेक्ट मॉडल के संदर्भ में परिभाषित किया जाता है, आप इन दिनों दोनों का उपयोग कर सकते हैं, 'querySelector *' और 'document.evaluate' के लिए धन्यवाद। पिछली आईई दुनिया (यहां तक कि IE10 की गिनती) में, देशी XPath समर्थन अभी भी HTML दस्तावेज़ों के लिए नहीं है, हालांकि। – ecmanaut