Модуль Velocity.Utilities представляет собой набор вспомогательных методов, используемых внутри библиотеки Velocity.js и доступных разработчику для решения типовых задач: работы с DOM, управления очередями анимаций, оптимизации производительности и унификации поведения между браузерами.
В отличие от основной части Velocity, ориентированной на анимации, Utilities-функции выполняют инфраструктурную роль и позволяют избегать прямого обращения к низкоуровневым API браузера.
Velocity работает с коллекциями элементов, поэтому важной задачей является нормализация входных данных.
Velocity.Utilities.elements(document.querySelectorAll(".box"));
Метод:
Особенности:
Velocity.Utilities.isNode(element);
Velocity.Utilities.isString(value);
Velocity.Utilities.isArray(value);
Назначение:
typeofVelocity.Utilities.getPropertyValue(element, "width");
Особенности:
Velocity.Utilities.setPropertyValue(element, "opacity", 0.5);
Функция:
Velocity.Utilities.addClass(element, "active");
Velocity.Utilities.removeClass(element, "hidden");
Velocity.Utilities.hasClass(element, "visible");
Преимущества:
classList
напрямуюVelocity использует собственное хранилище данных для элементов,
аналогичное data() в jQuery.
Velocity.Utilities.data(element, "key", "value");
Velocity.Utilities.data(element, "key");
Особенности:
Velocity поддерживает систему очередей, позволяющую управлять последовательностью выполнения анимаций.
Velocity.Utilities.queue(element, "fx", function(next) {
console.log("Шаг 1");
next();
});
Velocity.Utilities.dequeue(element, "fx");
Параметры:
element — DOM-элемент"fx" — имя очереди (по умолчанию используется именно
оно)Особенности:
Velocity реализует собственную систему deferred-объектов, схожую с Promise.
var deferred = Velocity.Utilities.deferred();
deferred.resolve();
deferred.reject();
deferred.promise().then(function() {
console.log("Готово");
});
Особенности:
Velocity.Utilities.delay(1000).then(function() {
console.log("Прошла 1 секунда");
});
Назначение:
var clone = Velocity.Utilities.extend({}, originalObject);
Функция:
Velocity.Utilities.extend(true, target, source);
Первый параметр:
true — глубокое копированиеfalse — поверхностноеVelocity.Utilities.each(array, function(index, value) {
console.log(index, value);
});
Особенности:
Velocity использует внутреннюю обёртку над
requestAnimationFrame, доступную через Utilities:
Velocity.Utilities.rAF(function() {
console.log("Кадр анимации");
});
Преимущества:
В некоторых версиях доступны вспомогательные функции ограничения частоты вызовов:
var throttled = Velocity.Utilities.throttle(function() {
console.log("Ограниченный вызов");
}, 200);
Назначение:
Velocity.Utilities.offset(element);
Возвращает:
Velocity.Utilities.dimensions(element);
Включает:
Хотя Velocity не заменяет полноценные системы событий, Utilities предоставляет базовые методы:
Velocity.Utilities.on(element, "click", handler);
Velocity.Utilities.off(element, "click", handler);
Особенности:
Utilities тесно интегрированы с основной системой Velocity:
Пример комбинированного использования:
var el = document.querySelector(".box");
Velocity.Utilities.queue(el, "fx", function(next) {
Velocity(el, { opacity: 0 }, {
duration: 500,
complete: next
});
});
Velocity.Utilities.queue(el, "fx", function(next) {
Velocity(el, { opacity: 1 }, {
duration: 500,
complete: next
});
});
Velocity.Utilities.dequeue(el);
Использование Velocity.Utilities позволяет:
Особенно полезны при: