XPath или querySelector?

Пишите абстракцию только в том случае, если она собирается сохранить в 3 раза больше времени.

Я вижу, как люди иногда пишут все эти сумасшедшие абстракции, и я думаю про себя: «Почему?»

Если абстракция действительно не сэкономит ваше время позже или она не спасет человека, поддерживающего ваше время кода кажется, что люди все больше и больше пишут спагетти-код.

12
задан BoltClock 21 August 2014 в 04:59
поделиться

2 ответа

Какой браузер вы используете? В Safari (или iPhone) querySelector и querySelectorAll намного быстрее, чем XPath. IE вообще не поддерживает XPath, а IE6 и IE7 не поддерживают querySelector. Самая быстрая кроссбраузерная селекторная машина - Sizzle , созданная Джоном Ресигом. Sizzle также является основным механизмом выбора, используемым в jQuery. Он использует querySelector там, где это необходимо, и обычные методы DOM, где querySelector недоступен.

7
ответ дан 2 December 2019 в 21:04
поделиться

С точки зрения функциональности, лучше всего будет использовать библиотеку, которая включает механизм выбора, и многие из них (например, MooTools, Dojo, Prototype) уже используют XPath внутри для выполнения некоторых классов. запросов. Вы должны иметь возможность рассчитывать на хорошую библиотеку, выбирающую для вас быстрый метод.

XPath может делать все, что может делать querySelector (я думаю, что это утверждение немного подозрительно, но это не относится к делу), но querySelector и querySelectorAll поддерживаются не всеми браузерами, поэтому на самом деле нам следует сравнивать XPath с собственными методами запросов DOM (т.е. getElementsByTagName, getElementById, querySelector, стандартными методами обхода и фильтрации и т. д. )

Использование собственных методов фильтрации DOM требует знания особенностей и ограничений браузера и быстро становится непрактичным для сложных запросов, если вы не используете библиотеку (например, jQuery или MooTools) для устранения несоответствий. Причина, по которой собственные методы DOM (будь то через прокси-сервер, например jQuery или пользовательские реализации) часто выбираются вместо XPath, заключается в том, что они предлагают гораздо большую гибкость, чем XPath. Например, если вы хотите отфильтровать отмеченные входы, «скрытые» элементы или отключенные входы, XPath не подойдет, но jQuery дает вам псевдоклассы: checked,: hidden и: disabled.

или пользовательские реализации) часто выбирают вместо XPath, потому что они предлагают гораздо большую гибкость, чем XPath. Например, если вы хотите отфильтровать отмеченные входы, «скрытые» элементы или отключенные входы, XPath не подойдет, но jQuery дает вам псевдоклассы: checked,: hidden и: disabled.

или пользовательские реализации) часто выбирают вместо XPath, потому что они предлагают гораздо большую гибкость, чем XPath. Например, если вы хотите отфильтровать отмеченные входы, «скрытые» элементы или отключенные входы, XPath не подойдет, но jQuery дает вам псевдоклассы: checked,: hidden и: disabled.

4
ответ дан 2 December 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: