Библиотека LoDash - это развитие и продолжение библиотеки Underscore.js. Если выбирать, какой библиотекой пользоваться, то выбор будет однозначно за LoDash. Достаточно сравнить колличество методов Underscore.js vs LoDash - LoDash Documentation.
Еще один большой плюс LoDash - это ее модульность. Каждый ее метод доступен в виде отдельного модуля \ модулей, который \ которые можно подключить и использовать; а не “тянуть” всю библиотеку (хотя она и небольшая - 4\22 kB).
Например, подключить только методы для работы с массивами:
Или же подключить только один метод chunk, чтобы уменьшить итоговую сборку:
Или вот так - нам нужны только два модуля random и foreach для генерации случайный фоновых заливок у коллекции блоков.
Тогда можно поступить так - устанавливаем всего два модуля вместо всей библиотеки lodash:
… и используем их, ибо только они нам нужны сейчас:
В этой статье я познакомлюсь с пятью методами LoDash, которые я отложил “на потом” при знакомстве с Underscore.js. Это методы для работы с функциями - .delay(), .once(), .after(), .before(), .debounce().
lodash - .delay()
Метод .delay() очень прост, но тем не менее - весьма полезен на практике. Это возможность запускать функцию с временной задержкой.
Самый простой пример - через 2 секунды в консоли браузера появится сообщение Hello World:
Справка по этому методу в официальной документации - Lodash - Delay.
lodash - .once()
Весьма полезный метод, который позволяет запустить функцию только один раз. Приведу два примера.
Простой пример с кнопкой - alert выскочит только один раз при нажатии кнопки:
Второй пример интереснее. Посмотрим на разметку. Затем на javascript-код.
Эта часть кода - украшательство, генерирование случайного цвета для каждого из блоков class=”block” при помощи метода .random():
Здесь функция callOnce() сработает только один раз и при условии, когда блок secondo “поднимется” от нижней границы окна браузера на высоту 85% от общей высоты окна.
iterrator “отщекнется” один раз и изменит содержимое блока id=”count” с 0 на 1:
Весьма полезный на практике прием. Официальная справка по методу .once() находится здесь - LoDash - Once Method.
lodash - .before()
Метод .before() - счетчик выполнения функции; метод запустит функцию менее n-раз (less than n times). В приведенном ниже примере клик по элементу #before сработает 9 раз и запустит функцию 9 раз (и не более того):
Можно сказать и так - метод .before() ограничивает максимальное количество запусков функции - не более n-раз.
Официальная документация по методу .before() находится здесь - LoDash - Before Method.
lodash - .after()
Метод .after() - еще один счетчик выполнения функции. Прямая противоположность методу .before().
Этот метод ограничивает количество попыток запуска функции - после n-попыток функцию можно будет запускать неограниченное количество раз:
Код выше выведет в консоль браузера текст After только после пятой попытки и далее сколько угодно раз. Где на практике можно применить такой подход - не приходит на ум, если честно )
Официальная документация по методу .after() находится здесь - LoDash - After Method.
lodash - .debounce()
Интересный и полезный на практике метод - запустить функцию function с временной задержкой; отсчет временной задержки идет с момента последнего запуска функции function.
Метод имеет большое количество аргументов - ссылка на официальную документацию - Lodash - Debounce Method.
Пример ниже будет выводить окно Call me after 2 second! с задержкой в 2 секунды после события resize - то есть, когда будут изменены размеры окна браузера:
Заключение
Вот я в меру своих сил и освоил несколько интересных методов библиотеки LoDash. Наиболее полезными для меня показались методы .debounce() и .once().
Что сказать - библиотека LoDash просто замечательная и чрезвычайно полезная. К тому же она постоянно развивается - ее автор John-David Dalton не устает ее совершенствовать.
Немного пофлудил по JavaScript … останавливаться пока не собираюсь )