Shepherd.js — это библиотека для создания интерактивных пошаговых руководств в веб-приложениях. Для начала работы необходимо подключить библиотеку к проекту. В современных проектах, использующих npm или Yarn, установка выполняется командой:
npm install shepherd.js
или
yarn add shepherd.js
После установки библиотеку подключают в коде следующим образом:
import Shepherd from 'shepherd.js';
import 'shepherd.js/dist/css/shepherd.css';
Для старых проектов возможно использование CDN:
<link rel="stylesheet" href="https://unpkg.com/shepherd.js/dist/css/shepherd.css" />
<script src="https://unpkg.com/shepherd.js/dist/js/shepherd.min.js"></script>
Основой любого тура является объект Shepherd.Tour. Его
создание выполняется через конструктор с передачей конфигурации:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true,
cancelIcon: {
enabled: true
}
}
});
Ключевые параметры defaultStepOptions:
shepherd-theme-arrows, shepherd-theme-default
и др.).Каждый шаг тура добавляется с помощью метода addStep и
содержит следующие основные параметры:
tour.addStep({
id: 'example-step',
text: 'Описание действия на этом шаге',
attachTo: {
element: '.example-element',
on: 'bottom'
},
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
});
Пояснения ключевых полей:
top,
bottom, left, right).tour.next(),
tour.back(), tour.cancel().Shepherd.js поддерживает расширенные параметры для контроля поведения каждого шага:
when: {
show: () => console.log('Шаг показан'),
hide: () => console.log('Шаг скрыт')
}
advanceOn: { selector: '.next-button', event: 'click' }
Shepherd.js предоставляет возможность расширять функциональность через плагины и кастомные шаги. Для публикации собственного расширения важно понимать два направления: создание кастомных шагов и создание плагинов для интеграции.
Создание кастомного шага осуществляется через наследование от
Shepherd.Step:
class CustomStep extends Shepherd.Step {
constructor(tour, options) {
super(tour, options);
}
open() {
console.log('Открыт кастомный шаг');
super.open();
}
}
После этого шаг добавляется в тур аналогично стандартным шагам:
tour.addStep(new CustomStep(tour, {
id: 'custom-step',
text: 'Кастомный шаг',
attachTo: { element: '#custom', on: 'top' }
}));
Плагины расширяют функциональность Shepherd.js для работы с внешними библиотеками, например, для аналитики или сложной анимации. Пример публикации простого плагина:
Shepherd.plugins = Shepherd.plugins || {};
Shepherd.plugins.analyticsPlugin = {
init(tour) {
tour.on('complete', () => {
console.log('Тур завершён, отправка данных в аналитику');
});
}
};
Для активации плагина достаточно вызвать:
Shepherd.plugins.analyticsPlugin.init(tour);
Для расширяемых проектов полезно настраивать глобальные параметры, которые будут применяться ко всем турам и шагам:
Shepherd.defaults = {
classes: 'shepherd-theme-arrows custom-global',
scrollTo: true,
useModalOverlay: true
};
show,
hide, complete) позволяет интегрировать
расширения без изменения ядра библиотеки.Для публикации расширений в npm или интеграции с проектами рекомендуется:
README.md.Это обеспечивает простую интеграцию расширений в проекты, использующие Shepherd.js, и упрощает поддержку при обновлениях библиотеки.