Skip to content

Интеграция Google Analytics в Nuxt

Похоже, вы запрашиваете информацию об интеграции Google Analytics в ваше приложение Nuxt. Хотя официального модуля @nuxtjs/google-analytics для Nuxt 3 (как это было в Nuxt 2) больше нет, существует несколько эффективных способов реализовать отслеживание Google Analytics в вашем проекте Nuxt 3.

Вот рекомендуемые подходы:

1. Использование vue-gtag-next (Рекомендуется для Nuxt 3)

vue-gtag-next — это популярный плагин Vue.js, который обеспечивает комплексную интеграцию Google Analytics (GA4) и Google Tag Manager (GTM). Он хорошо подходит для Nuxt 3.

Установка:

bash
npm install vue-gtag-next
# или
yarn add vue-gtag-next

Конфигурация плагина (plugins/vue-gtag.client.ts):

Создайте плагин на стороне клиента для инициализации vue-gtag-next. Использование .client гарантирует, что он будет выполняться только в браузере.

typescript
import { defineNuxtPlugin } from '#app';
import VueGtag from 'vue-gtag-next';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(VueGtag, {
    property: {
      id: process.env.GA_MEASUREMENT_ID, // Ваш идентификатор ресурса Google Analytics (GA4)
    },
    // Необязательно: Включить режим отладки для разработки
    debug: process.env.NODE_ENV !== 'production',
  });
});

Обязательно установите свой идентификатор ресурса Google Analytics (обычно начинается с G-) в файле .env:

GA_MEASUREMENT_ID=G-XXXXXXXXXX

Использование в компонентах и composables:

После установки вы можете получить доступ к объекту $gtag внутри ваших Vue-компонентов и Nuxt composables:

vue
<template>
  <button @click="trackButtonClick">Отследить нажатие кнопки</button>
</template>

<script setup>
import { useNuxtApp } from '#app';

const { $gtag } = useNuxtApp();

function trackButtonClick() {
  $gtag.event('click', {
    event_category: 'Взаимодействие пользователя',
    event_label: 'Главная кнопка',
  });
}
</script>

Автоматическое отслеживание просмотров страниц:

По умолчанию vue-gtag-next автоматически отслеживает просмотры страниц при изменении маршрута в вашем приложении Nuxt.

Расширенная конфигурация:

vue-gtag-next предлагает множество расширенных параметров конфигурации, таких как:

  • Интеграция с Google Tag Manager: Вы можете настроить его для работы с GTM.
  • Пользовательские параметры и показатели: Настройка и отслеживание пользовательских данных.
  • Отслеживание расширенной электронной торговли: Отслеживание просмотров товаров, добавлений в корзину, покупок и т. д.
  • Обработка событий: Отправка пользовательских событий для действий пользователя.

Обратитесь к официальной документации vue-gtag-next для получения подробной информации о конфигурации и использовании.

2. Непосредственное использование скрипта gtag.js (Базовая реализация)

Вы также можете напрямую включить скрипт gtag.js Google Analytics в свое приложение Nuxt. Это более простой подход, но его может быть достаточно для простых задач отслеживания.

Добавление скрипта (app.vue или файл макета):

vue
<script setup>
import { onMounted } from 'vue';

const GA_MEASUREMENT_ID = process.env.GA_MEASUREMENT_ID;

onMounted(() => {
  if (GA_MEASUREMENT_ID) {
    // Загрузка скрипта gtag.js
    const script = document.createElement('script');
    script.async = true;
    script.src = `https://www.googletagmanager.com/gtag/js?id=${GA_MEASUREMENT_ID}`;
    document.head.appendChild(script);

    // Инициализация gtag
    window.dataLayer = window.dataLayer || [];
    function gtag() {
      window.dataLayer.push(arguments);
    }
    window.gtag = gtag;
    gtag('js', new Date());
    gtag('config', GA_MEASUREMENT_ID);
  }
});
</script>

Не забудьте установить GA_MEASUREMENT_ID в файле .env.

Отслеживание событий:

Затем вы можете использовать функцию gtag() для отслеживания событий в ваших компонентах:

vue
<template>
  <button @click="trackButtonClick">Отследить нажатие кнопки (Непосредственно)</button>
</template>

<script setup>
function trackButtonClick() {
  if (window.gtag) {
    window.gtag('event', 'click', {
      event_category: 'Взаимодействие пользователя',
      event_label: 'Другая кнопка',
    });
  }
}
</script>

Соображения при непосредственной реализации скрипта:

  • Ручное отслеживание просмотров страниц (SPA-поведение): В одностраничном приложении (SPA), таком как Nuxt, вам необходимо вручную отслеживать просмотры страниц при изменении маршрута. Вы можете сделать это, используя composable useRouter() и отслеживая изменения маршрута:

    typescript
    import { useRouter, useNuxtApp } from '#app';
    import { onMounted, watch } from 'vue';
    
    const router = useRouter();
    const { $gtag } = useNuxtApp(); // Если вы также используете vue-gtag-next для событий
    
    onMounted(() => {
      watch(router.currentRoute, (newRoute) => {
        if (window.gtag) {
          window.gtag('config', process.env.GA_MEASUREMENT_ID, {
            page_path: newRoute.fullPath,
          });
        } else if ($gtag) {
          $gtag.pageview({ page_path: newRoute.fullPath });
        }
      });
    });
  • Более ручное управление: Вам придется самостоятельно обрабатывать большую часть настройки Google Analytics и отслеживания событий.

3. Использование Google Tag Manager (Более продвинутый подход)

Для более сложных сценариев отслеживания настоятельно рекомендуется использовать Google Tag Manager. Вы установите скрипт GTM в своем приложении Nuxt, а затем настроите Google Analytics (и другие инструменты отслеживания) в интерфейсе GTM.

Установка (Плагин — plugins/gtm.client.ts):

typescript
import { defineNuxtPlugin } from '#app';

export default defineNuxtPlugin(() => {
  const GTM_ID = process.env.GTM_ID;

  if (GTM_ID) {
    (function(w, d, s, l, i) {
      w[l] = w[l] || [];
      w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
      var f = d.getElementsByTagName(s)[0],
        j = d.createElement(s),
        dl = l != 'dataLayer' ? '&l=' + l : '';
      j.async = true;
      j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
      f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', GTM_ID);
  }
});

Установите свой идентификатор Google Tag Manager в файле .env:

GTM_ID=GTM-XXXXXXX

Использование:

При использовании GTM вы будете отправлять события в dataLayer в своих компонентах:

vue
<template>
  <button @click="trackButtonClick">Отследить нажатие кнопки (GTM)</button>
</template>

<script setup>
function trackButtonClick() {
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    event: 'button_click',
    category: 'Взаимодействие пользователя',
    label: 'Кнопка GTM',
  });
}
</script>

Затем вы настраиваете триггеры и теги в интерфейсе Google Tag Manager для отправки этих данных в Google Analytics или другие платформы.

Выбор правильного подхода:

  • Для большинства проектов Nuxt 3 рекомендуется использовать vue-gtag-next из-за его простоты использования, широких возможностей и совместимости с Nuxt.
  • Непосредственное использование скрипта gtag.js — более простой вариант для базового отслеживания, но требует больше ручного управления, особенно в случае SPA-поведения.
  • Google Tag Manager — наиболее мощный и гибкий вариант для сложных задач отслеживания и управления несколькими маркетинговыми и аналитическими инструментами.

Не забудьте установить выбранную библиотеку и правильно настроить ее в nuxt.config.ts или внутри плагинов. Использование переменных окружения для хранения ваших идентификаторов отслеживания является лучшей практикой для безопасности и управления конфигурацией.