Shepherd.js активно развивается, и с каждой версией некоторые API устаревают и заменяются более современными и безопасными методами. Работа с устаревшими API может привести к непредсказуемому поведению, проблемам совместимости и трудностям при обновлении проекта. Понимание устаревших методов важно для поддержания существующих приложений и грамотного перехода на актуальные практики.
Ранее для создания тура использовался глобальный объект
Shepherd.Tour, например:
const tour = new Shepherd.Tour({
defaults: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
Сейчас рекомендуется использовать Shepherd.Tour через
импорт ES6-модуля:
import Shepherd from 'shepherd.js';
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
Ключевое отличие:
tour.addStep(), но новые версии требуют использования
defaultStepOptions вместо defaults.defaults больше не поддерживается в современных
версиях.Раньше можно было передавать объект напрямую в
addStep:
tour.addStep({
title: 'Шаг 1',
text: 'Описание шага',
attachTo: '.element bottom'
});
В актуальной версии рекомендуется использовать конструктор
Shepherd.Step:
import Shepherd from 'shepherd.js';
const step = new Shepherd.Step(tour, {
title: 'Шаг 1',
text: 'Описание шага',
attachTo: { element: '.element', on: 'bottom' }
});
tour.addStep(step);
Причины устаревания:
Step позволяет наследовать и добавлять
кастомные методы к шагам.Ранее для привязки шага к элементу использовалась строка:
attachTo: '.selector bottom'
Сейчас синтаксис изменён на объект:
attachTo: {
element: '.selector',
on: 'bottom'
}
Проблемы устаревшей формы:
Ранее для обработки событий использовались устаревшие методы вроде:
tour.onShow(function() {
console.log('Тур показан');
});
Теперь используется современный синтаксис с добавлением слушателей
через объект events:
const tour = new Shepherd.Tour({
defaultStepOptions: { scrollTo: true },
useModalOverlay: true
});
tour.on('show', () => {
console.log('Тур показан');
});
Основные изменения:
onShow, onComplete,
onCancel больше не поддерживаются.on(eventName, callback).Ранее параметры кастомизации шагов включали устаревшие поля:
classes: 'shepherd-theme-arrows',
scrollTo: true,
buttons: [
{ text: 'Далее', action: tour.next }
]
В актуальной версии синтаксис изменён:
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: { beh * avior: 'smooth', block: 'center' },
buttons: [
{
text: 'Далее',
action() { return this.next(); }
}
]
}
Важные моменты:
scrollTo теперь объект с возможностью настройки
поведения прокрутки.action кнопки должно быть функцией, чтобы корректно
вызывалось внутри контекста шага.this и неправильной навигации.В ранних версиях модальное затемнение устанавливали через
modal: true или backdrop: true.
В современных версиях используется отдельный флаг
useModalOverlay:
const tour = new Shepherd.Tour({
useModalOverlay: true
});
Причины изменения:
| Устаревший метод / опция | Новая альтернатива |
|---|---|
Shepherd.Tour({ defaults }) |
Shepherd.Tour({ defaultStepOptions }) |
tour.addStep({ ... }) |
tour.addStep(new Shepherd.Step(tour, { ... })) |
attachTo: '.selector position' |
attachTo: { element: '.selector', on: 'position' } |
tour.onShow(callback) |
tour.on('show', callback) |
scrollTo: true/false |
scrollTo: { behavior, block } |
modal: true / backdrop: true |
useModalOverlay: true |
Понимание этих изменений критично для поддержки существующих проектов и перехода на актуальные версии Shepherd.js, обеспечивая стабильность и расширяемость туров.