Pull to refresh

Wicked Good XPath: быстрый Xpath на Javascript-е

Reading time2 min
Views8.5K
Original author: Stephanie Taylor
Мы рады представить новую библиотеку, разработанную силами Google – Wicked Good XPath, реализацию спецификации XPath для DOM Level 3. Мы уверены, что на сегодня эта библиотека является самой быстрой из всех существующих.

Чтобы начать ее использовать, достаточно скачать файл wgxpath.install.js и включить его на вашей странице



Затем вызовите метод wgxpath.install() в коде страницы, который обеспечит доступ к document.evaluate, функции навигации Xpath, в текущем окне (window). Если вам нужно добавить функционал библиотеки в другом окне, достаточно передать указатель на это окно в метод install().

Несмотря на растущую популярность CSS селекторов, XPath все еще остается полезным инструментом для выборки элементов в HTML документе. Особенно часто он используется в приложениях тестирования фронт-энда, таких как Selenium и Web Puppeteer. Ну, и иногда бывают случаи, когда Xpath является единственным возможным решением для доступа к определенным элементам на странице.

Если вы никогда не встречались с Xpath прежде, взгляние на пример: на странице результатов поиска Google, выражение //li[@class=”g”][3] укажет на третий результат в списке. Это видно со скрина плагина Xpath Viewer к Хрому.

image

Основной сложностью в использовании XPath является отсуствие нативной поддержки в некоторых браузерах. К примеру, IE не поддерживает XPath на HTML документах. В результате этого многие разработчики вынуждены использовать решения на Javascript. Еще в 2005-ом инженеры Google-a выпустили библиотеку AJAXSLT, которая реализовывала правильную, но не очень быструю работу Xpath. Выполнение запросов этой библиотекой в IE было довольно долгим.

Позже, в 2007-ом, группа Cybozu Labs представила другую библиотеку, Javascript-XPath, которая была быстрее AJAXSLT в 10 раз. Многие приложения тестирования перешли на нее, и все было замечательно, но недолго. Библиотека довольно быстро лишилась поддержки, некому стало фиксить баги. Ну и ввиду того, что она была написана не на Google Closure, нам, гугловцам, было непросто внедрять ее в свои приложения. Библиотеку нужно было переписывать.

Но мы не просто портировали ее на Google Closure. Мы внесли некоторые исправления, которые существенно отразились на производительности библиотеки – наша версия работает на 30% быстрее оригинальной. В добавок, компилятор Closure смог ужать ее до 25 КБ, что на 40% меньше, чем Javascript-XPath. Ну, и наконец, мы уверены, что новая структуризация, и документация кода обеспечит скорость и легкость в дальнейшей поддержке библиотеки.

Отдельно хотим выразить благодарность двум нашим интернам Google-a, Michael Zhou и Evan Thomas, проделавшим большую часть работы в этом проекте.

Инженеры Google, Greg Dennis и Joon Lee.
Tags:
Hubs:
+14
Comments9

Articles

Change theme settings