Shepherd.js построен вокруг концепции туров (tours),
состоящих из последовательности шагов (steps), каждый
из которых представляет собой отдельное взаимодействие с
пользовательским интерфейсом. Центральным объектом является
Shepherd.Tour, который управляет жизненным циклом всех
шагов, их порядком, событиями и поведением.
Каждый шаг создается с помощью конструктора
Shepherd.Tour().addStep() и может содержать следующие
ключевые параметры:
title – заголовок шага,
отображаемый в подсказке.
text – основной контент, описание
действия или инструкции. Может быть строкой или массивом строк.
attachTo – объект с указанием
элемента DOM и позиции подсказки относительно него:
attachTo: { element: '.button', on: 'bottom' }buttons – массив объектов кнопок,
каждая с собственным текстом, стилями и обработчиками событий
(action).
classes – CSS-классы для
кастомизации внешнего вида.
scrollTo – логическое значение или
объект, управляющее прокруткой страницы к элементу перед показом
шага.
Объект шага управляется через методы show(),
hide(), cancel(), complete() и
события, такие как show, hide,
complete, cancel.
Тур в Shepherd.js представляет собой контейнер шагов
с логикой навигации и событийной системой. Внутри
Shepherd.Tour реализованы следующие ключевые аспекты:
this.steps и упорядочиваются согласно порядку
добавления.next(),
back() и show(step) позволяют управлять
последовательностью шага.EventEmitter. Поддерживаются события на
уровне тура (start, complete,
cancel) и шагов (show,
hide).active, completed, cancelled),
что позволяет интегрировать его с внешними приложениями и проверять
прогресс пользователя.Пример инициализации и запуска тура:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: { enabled: true },
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
});
tour.addStep({
title: 'Пример шага',
text: 'Описание действия',
attachTo: { element: '.example', on: 'right' },
buttons: [
{ text: 'Назад', action: tour.back },
{ text: 'Далее', action: tour.next }
]
});
tour.start();
Shepherd.js использует библиотеку Popper.js для управления позиционированием подсказок относительно элементов страницы. Это обеспечивает:
top,
bottom, left, right) при
ограниченном пространстве.Ключевой объект attachTo объединяет DOM-элемент и
позицию, а Popper.js отвечает за выравнивание, смещение и
предотвращение выхода подсказки за пределы окна.
Shepherd.js спроектирован с модульной архитектурой, что позволяет:
Каждый шаг является отдельным объектом с полным набором методов и событий, что делает возможным динамическое создание и удаление шагов во время выполнения. Например, шаги могут подгружаться по мере выполнения пользователя или изменяться в зависимости от состояния приложения.
Shepherd.js легко интегрируется с популярными фреймворками:
Shepherd.Tour и использование эффекта
useEffect для инициализации и уничтожения тура.Эта архитектура обеспечивает чистую изоляцию логики тура от представления и состояния приложения.
Shepherd.js построен на событийной модели, обеспечивающей высокий уровень контроля. Основные события:
start,
complete, cancel,
activeStepChange.show,
hide, complete, cancel.События позволяют отслеживать точный момент взаимодействия пользователя с элементами интерфейса, а также создавать кастомные действия, например:
tour.on('complete', () => {
console.log('Пользователь завершил тур');
});
tour.steps[0].on('show', () => {
console.log('Показан первый шаг');
});