Gridstack.js предоставляет мощные возможности для построения интерактивных сеточных интерфейсов на основе drag-and-drop. Обратная совместимость (backward compatibility) является критически важной при обновлении библиотеки, чтобы существующие проекты не ломались при переходе на новые версии.
В Gridstack.js обратная совместимость обеспечивается несколькими уровнями: API, структура данных и формат конфигурационных объектов.
Gridstack.js активно развивается, и с каждой версией появляются новые методы и параметры. Для сохранения обратной совместимости:
grid.addWidget() или grid.removeWidget()
сохраняют прежнюю функциональность, хотя могут быть дополнены новыми
параметрами.Gridstack.js работает напрямую с DOM-элементами сетки и виджетов. Обратная совместимость в DOM важна для корректного отображения:
data-gs-x,
data-gs-y, data-gs-width,
data-gs-height продолжают работать. Эти атрибуты
используются для инициализации положения и размеров виджетов..grid-stack,
.grid-stack-item) остаются неизменными. Это
позволяет избежать конфликтов стилей при обновлении версии
библиотеки.added,
removed, change) продолжают генерироваться в
привычном виде, что сохраняет совместимость с существующими
обработчиками событий.Gridstack.js позволяет задавать параметры сетки и виджетов через объекты конфигурации. Обратная совместимость обеспечивается следующим образом:
cellHeight или float работают в новых версиях,
даже если введены новые альтернативные параметры, такие как
rowHeight или verticalMargin.grid.save()) совместим с предыдущими версиями. Старые
JSON-файлы можно загрузить через grid.load(), и виджеты
займут те же позиции.Событийная система Gridstack.js эволюционирует, но сохраняет старые паттерны:
dragstart, dragstop, resizestart,
resizestop остаются действительными.on или
off. Старые обработчики продолжают корректно
работать без изменений.Gridstack.js предлагает рекомендации для плавной миграции:
var grid = GridStack.init();
grid.addWidget('<div><div class="grid-stack-item-content">Widget</div></div>', {x:0, y:0, width:2, height:2});
Даже если новые версии поддерживают дополнительный параметр
autoPosition, код с двумя аргументами будет работать
корректно.
var oldState = [
{x:0, y:0, width:2, height:2, content:'Old Widget'}
];
grid.load(oldState);
Виджеты будут восстановлены в прежнем положении без ошибок, хотя
новые свойства, такие как locked, могут быть установлены по
умолчанию.
Gridstack.js активно используется совместно с jQuery и другими библиотеками. Для обратной совместимости:
$('.grid-stack').gridstack()) продолжают работать.Gridstack.js обеспечивает высокий уровень обратной совместимости за счет сохранения старых методов, атрибутов DOM, структуры событий и форматов конфигурации. Это позволяет обновлять библиотеку без риска нарушения существующего функционала, постепенно внедряя новые возможности и улучшения.