NuxtJS VK Pixel module
npm install nuxtjs-vk-pixelNuxt модуль для интеграции VK Pixel (Top.Mail.Ru счетчика) в Nuxt 3 приложения.
``bash`
npm install nuxtjs-vk-pixel
Добавьте модуль в nuxt.config.ts:
`typescript`
export default defineNuxtConfig({
modules: [
'nuxtjs-vk-pixel',
],
vkPixel: {
id: 'your-pixel-id', // Обязательный параметр
scriptSrc: 'https://top-fwz1.mail.ru/js/code.js', // Опционально
noscriptSrc: 'https://top-fwz1.mail.ru/counter', // Опционально
debug: false, // Опционально, по умолчанию true в dev режиме
},
})
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|----------|-----|--------------|--------------|----------|
| id | string | ✅ | 'xxx' | ID вашего VK Pixel счетчика |scriptSrc
| | string | ❌ | 'https://top-fwz1.mail.ru/js/code.js' | URL скрипта счетчика |noscriptSrc
| | string | ❌ | 'https://top-fwz1.mail.ru/counter' | URL для noscript версии |debug
| | boolean | ❌ | NODE_ENV !== 'production' | Включить режим отладки |
Используйте useVkPixel() для доступа к API счетчика:
`vue`
Вы также можете получить доступ к счетчику через $vkPixel:
`typescript`
const { $vkPixel } = useNuxtApp()
$vkPixel.push({ type: 'pageView' })
Возвращает объект с методами для работы с VK Pixel.
#### pageView(payload: IPageViewPayload)
Отправляет событие просмотра страницы.
Параметры:
- url: string - URL страницыreferrer: string
- - URL реферера
Пример:
`typescript`
vkPixel.pageView({
url: 'https://example.com/page',
referrer: 'https://google.com'
})
#### push(payload: IPushPayload)
Отправляет произвольное событие в счетчик.
Параметры:
- type: 'reachGoal' | 'pageView' | 'onready' - Тип событияgoal?: string
- - Идентификатор цели (для reachGoal)start?: number
- - Время начала (timestamp)url?: string
- - URL страницыcategory?: string
- - Категория событияaction?: string
- - Действиеlabel?: string
- - Метка событияparams?: Record
- - Дополнительные параметрыcallback?: (...args: any[]) => void
- - Функция обратного вызова
Примеры:
`typescript
// Отслеживание достижения цели
vkPixel.push({
type: 'reachGoal',
goal: 'purchase',
params: {
order_id: '12345',
amount: 1000,
currency: 'RUB'
}
})
// Отслеживание просмотра страницы
vkPixel.push({
type: 'pageView',
url: window.location.href,
start: Date.now()
})
// Отслеживание готовности страницы
vkPixel.push({
type: 'onready',
callback: () => {
console.log('Pixel загружен')
}
})
`
Модуль экспортирует следующие TypeScript типы:
`typescript
interface IPageViewPayload {
id: string
url: string
referrer: string
}
interface IPushPayload {
id: string
type: 'reachGoal' | 'pageView' | 'onready'
goal?: string
start?: number
url?: string
category?: string
action?: string
label?: string
params?: Record
callback?: (...args: any[]) => void
}
interface IVkPixelTmr {
pageView: (payload: IPageViewPayload) => void
push: (payload: IPushPayload) => void
}
`
`vue`
`vue`
`vue`
- ✅ Автоматическая загрузка скрипта счетчика
- ✅ Поддержка noscript версии для пользователей без JavaScript
- ✅ TypeScript поддержка из коробки
- ✅ Интеграция с @nuxt/scripts для оптимизированной загрузки$vkPixel`
- ✅ Автоматическая инициализация при готовности Nuxt приложения
- ✅ Доступ через composable и через
MIT
Dmitrii Lartsev - GitHub