Shepherd.js — это библиотека для создания интерактивных туров по интерфейсу веб-приложений. Для более глубокого контроля за пользовательским поведением важно интегрировать аналитические события, фиксируя каждый шаг тура. Это позволяет отслеживать, какие элементы вызывают сложности, где пользователи пропускают шаги, и какие части интерфейса требуют доработки.
Каждый шаг тура в Shepherd.js поддерживает набор событий:
show, hide, complete,
cancel. Эти события можно использовать для отправки данных
в систему аналитики (например, Google Analytics, Mixpanel или внутреннюю
систему логирования).
Пример настройки события show для шага:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
tour.addStep({
id: 'intro-step',
text: 'Это первый шаг вашего тура.',
attachTo: { element: '#start-button', on: 'bottom' },
buttons: [
{ text: 'Далее', action: tour.next }
],
when: {
show: () => {
analytics.track('tour_step_shown', { stepId: 'intro-step' });
}
}
});
Здесь функция analytics.track вызывается при показе
шага, передавая идентификатор шага. Это ключевой подход для детального
анализа прохождения тура.
Shepherd.js предоставляет глобальные события на уровне всего тура:
complete и cancel. Использование этих событий
позволяет фиксировать, завершил ли пользователь весь тур или прервал его
на каком-либо этапе.
tour.on('complete', () => {
analytics.track('tour_completed', { userId: currentUser.id });
});
tour.on('cancel', () => {
analytics.track('tour_cancelled', { userId: currentUser.id });
});
Эта информация помогает строить отчеты об успешности туров и выявлять этапы, на которых пользователи чаще всего прерывают взаимодействие.
Можно отслеживать клики по кнопкам, навигацию по шагам и время, проведенное на каждом шаге. Для этого используют встроенные обработчики событий в кнопках шага:
tour.addStep({
id: 'feature-step',
text: 'Здесь мы показываем важную функциональность.',
attachTo: { element: '#feature', on: 'right' },
buttons: [
{
text: 'Далее',
action: () => {
analytics.track('next_clicked', { stepId: 'feature-step' });
tour.next();
}
},
{
text: 'Назад',
action: () => {
analytics.track('back_clicked', { stepId: 'feature-step' });
tour.back();
}
}
],
when: {
show: () => {
stepStartTime = new Date();
},
hide: () => {
const duration = new Date() - stepStartTime;
analytics.track('step_time', { stepId: 'feature-step', duration });
}
}
});
Этот подход позволяет измерять время взаимодействия с каждым шагом, выявлять сложные элементы интерфейса и определять эффективность каждого шага тура.
Shepherd.js удобно использовать совместно с системами
A/B-тестирования. Например, можно запускать разные варианты тура для
отдельных сегментов пользователей и отслеживать поведение через события
show, complete, cancel.
if (userGroup === 'A') {
tour.addStep({ id: 'step-a1', text: 'Вариант A, шаг 1' });
} else {
tour.addStep({ id: 'step-b1', text: 'Вариант B, шаг 1' });
}
tour.start();
Каждое событие фиксируется в аналитике с указанием варианта, что позволяет сравнивать эффективность разных туров.
Для комплексного анализа важно отслеживать ошибки отображения тура и
непредвиденные сценарии, такие как отсутствие целевого элемента на
странице. Shepherd.js предоставляет обработчики ошибок через промисы при
вызове tour.start():
tour.start()
.catch(error => {
analytics.track('tour_error', { message: error.message });
});
Это помогает выявлять проблемы, которые могут мешать пользователям проходить тур, и улучшать стабильность интерфейса.
stepId), необходимый для анализа прохождения
тура.duration).next, back, skip.complete или
cancel, фиксирующие итоги прохождения.Такой подход обеспечивает полноту данных, удобство построения отчетов и позволяет принимать решения на основе конкретной аналитики взаимодействия с туром.
Такой подход превращает Shepherd.js не только в инструмент для обучения интерфейсу, но и в полноценный механизм сбора аналитики и улучшения пользовательского опыта.