Learning JavaScript Design Patterns / Шаблоны проектирования JavaScript: Что такое шаблон - Вы уже используете их

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Для понимания какую пользу шаблоны могут иметь, давайте посмотрим простой пример как библиотека JQuery решает пробоему выбора елементов

SqrTT 19.11.13 в 10:46

0

Чтобы было понятнее насколько полезными могут быть шаблоны, давайте рассмотрим в качестве примера, то как jQuery выборки элементов по селектору.

turkeevm 19.01.14 в 18:05

0

Представте себе, что у вас есть скрипт который с каждом DOM елементе с класом "foo" на странице увеличивает счетчик. Который запрос коллекции елементов наиболее эффективен? Ну, собственно есть несколько разных путей решения:

SqrTT 19.11.13 в 12:49

0

Представьте себе, что у нас есть скрипт, который для каждого элемента DOM с классом foo найденного на странице увеличивает некий счетчик. Какой способ запросить элементы самый эффективный? Ну, есть несколько подходов к вопросу:

turkeevm 19.01.14 в 18:08

0

Выбрать все элементы на странице и сохранить ссылки на них. Далее фильтровать полученую коллекцию используя регулярое выражение(или другой способ) чтоб сохранить только елементы с класом "foo".
Использовать современную встроеную функцию типа querySelectorAll() для выбора всех елементов с класом "foo".
Использовать встроеную функцию getElementsByClassName() для простого получения необходимой коллекции.
Который варинат будет наиболее быстрый? Действительно, это будет третий вариант, он 8-10 раз эффективнее других. Однако в реальном мире он не будет работать в Internet Explorer ниже 9 версии, поэтому необходимо использовать первый вариант, так как оба второй и третий не поддерживаются.

SqrTT 19.11.13 в 13:13

1

Разработчки, которые пользуются jQuery не волнуются об данной проблеме т.к. к счастю она абстрагированая с помощю шаблона Фасад. Далее мы более детально расмотрим как шаблон обеспечивает набор абстрактных интерфейсов (таких как $el.css(), $el.animate()) и прячет за собой более сложный код. Как мы видели, это означает экономию времени на беспокойстве о деталях на уровне реализации.

SqrTT 19.11.13 в 14:14

0

За кулисами библиотека просто выбирает наиболе оптимальный подход для выбора елементов в зависимости от поддержки вашего текущего браузера и мы просто используем уровень абстракции.

SqrTT 19.11.13 в 14:22

0

Вероятно многие знакомы с селекторами jQuery $("selector"). Это значительно легче использования выборки HTML елементов на странице в сравнении с ручным выбором варианта с getElementById(), getElementsByClassName(), getElementByTagName() и так далее.

SqrTT 19.11.13 в 14:35

0

Хотя мы знаем что querySelectorAll() стремится решить данную задачу, но сравните усилия использованные в случае с jQuery интерфейсом Фасад и выбором оптимального пути самим. Они не сравнимы! Использование шаблонов может иметь реальную ценность.

SqrTT 19.11.13 в 14:50

0

В книге мы рассмотрим этот и другие шаблоны проектирования позднее.

SqrTT 19.11.13 в 14:52

0
Минутку...