Сторонние библиотеки

@next/third-parties — это библиотека, предоставляющая набор компонентов и утилит, которые улучшают производительность и удобство разработки при загрузке популярных сторонних библиотек в вашем приложении Next.js.

Все интеграции сторонних библиотек, предоставляемые @next/third-parties, оптимизированы для производительности и простоты использования.

Начало работы

Для начала установите библиотеку @next/third-parties:

Терминал
npm install @next/third-parties@latest next@latest

@next/third-parties в настоящее время является экспериментальной библиотекой, находящейся в активной разработке. Мы рекомендуем устанавливать её с флагами latest или canary, пока мы работаем над добавлением новых интеграций со сторонними библиотеками.

Сторонние библиотеки Google

Все поддерживаемые сторонние библиотеки от Google можно импортировать из @next/third-parties/google.

Google Tag Manager

Компонент GoogleTagManager можно использовать для инициализации контейнера Google Tag Manager на вашей странице. По умолчанию он загружает оригинальный встроенный скрипт после гидратации страницы.

Чтобы загрузить Google Tag Manager для всех маршрутов, включите компонент непосредственно в корневой макет и передайте ваш идентификатор контейнера GTM:

import { GoogleTagManager } from '@next/third-parties/google'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <GoogleTagManager gtmId="GTM-XYZ" />
      <body>{children}</body>
    </html>
  )
}
import { GoogleTagManager } from '@next/third-parties/google'

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <GoogleTagManager gtmId="GTM-XYZ" />
      <body>{children}</body>
    </html>
  )
}

Чтобы загрузить Google Tag Manager для одного маршрута, включите компонент в файл страницы:

app/page.js
import { GoogleTagManager } from '@next/third-parties/google'

export default function Page() {
  return <GoogleTagManager gtmId="GTM-XYZ" />
}

Отправка событий

Функция sendGTMEvent может использоваться для отслеживания взаимодействий пользователей на вашей странице путём отправки событий через объект dataLayer. Для работы этой функции компонент <GoogleTagManager /> должен быть включён либо в родительский макет, страницу, компонент, либо непосредственно в том же файле.

app/page.js
'use client'

import { sendGTMEvent } from '@next/third-parties/google'

export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
      >
        Отправить событие
      </button>
    </div>
  )
}

Обратитесь к документации разработчика Tag Manager, чтобы узнать о различных переменных и событиях, которые можно передать в функцию.

Параметры

Параметры для передачи в Google Tag Manager. Полный список параметров см. в документации Google Tag Manager.

НазваниеТипОписание
gtmIdОбязательныйИдентификатор вашего контейнера GTM. Обычно начинается с GTM-.
dataLayerОпциональныйМассив data layer для инициализации контейнера. По умолчанию пустой массив.
dataLayerNameОпциональныйИмя data layer. По умолчанию dataLayer.
authОпциональныйЗначение параметра аутентификации (gtm_auth) для сниппетов окружения.
previewОпциональныйЗначение параметра предпросмотра (gtm_preview) для сниппетов окружения.

Google Analytics

Компонент GoogleAnalytics можно использовать для подключения Google Analytics 4 к вашей странице через Google тег (gtag.js). По умолчанию он загружает оригинальные скрипты после гидратации страницы.

Рекомендация: Если Google Tag Manager уже подключён в вашем приложении, вы можете настроить Google Analytics непосредственно через него, вместо использования отдельного компонента. Подробнее см. в документации о различиях между Tag Manager и gtag.js.

Чтобы загрузить Google Analytics для всех маршрутов, включите компонент непосредственно в корневой макет и передайте ваш идентификатор измерения:

import { GoogleAnalytics } from '@next/third-parties/google'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body>{children}</body>
      <GoogleAnalytics gaId="G-XYZ" />
    </html>
  )
}
import { GoogleAnalytics } from '@next/third-parties/google'

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>{children}</body>
      <GoogleAnalytics gaId="G-XYZ" />
    </html>
  )
}

Чтобы загрузить Google Analytics для одного маршрута, включите компонент в файл страницы:

app/page.js
import { GoogleAnalytics } from '@next/third-parties/google'

export default function Page() {
  return <GoogleAnalytics gaId="G-XYZ" />
}

Отправка событий

Функция sendGAEvent может использоваться для измерения взаимодействий пользователей на вашей странице путём отправки событий через объект dataLayer. Для работы этой функции компонент <GoogleAnalytics /> должен быть включён либо в родительский макет, страницу, компонент, либо непосредственно в том же файле.

app/page.js
'use client'

import { sendGAEvent } from '@next/third-parties/google'

export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGAEvent({ event: 'buttonClicked', value: 'xyz' })}
      >
        Отправить событие
      </button>
    </div>
  )
}

Обратитесь к документации разработчика Google Analytics, чтобы узнать больше о параметрах событий.

Отслеживание просмотров страниц

Google Analytics автоматически отслеживает просмотры страниц при изменении состояния истории браузера. Это означает, что клиентские переходы между маршрутами Next.js будут отправлять данные о просмотрах без дополнительной настройки.

Чтобы убедиться, что клиентские переходы корректно учитываются, проверьте, что в панели администратора включено свойство "Расширенное измерение" и отмечен чекбокс "Изменения страниц на основе событий истории браузера".

Примечание: Если вы решите отправлять события просмотров страниц вручную, убедитесь, что отключили стандартное измерение просмотров, чтобы избежать дублирования данных. Подробнее см. в документации разработчика Google Analytics.

Параметры

Параметры для передачи в компонент <GoogleAnalytics>.

НазваниеТипОписание
gaIdОбязательныйВаш идентификатор измерения. Обычно начинается с G-.
dataLayerNameОпциональныйИмя data layer. По умолчанию dataLayer.

Google Maps Embed

Компонент GoogleMapsEmbed можно использовать для добавления Google Maps Embed на вашу страницу. По умолчанию он использует атрибут loading для ленивой загрузки встраиваемого контента ниже сгиба.

app/page.js
import { GoogleMapsEmbed } from '@next/third-parties/google'

export default function Page() {
  return (
    <GoogleMapsEmbed
      apiKey="XYZ"
      height={200}
      width="100%"
      mode="place"
      q="Brooklyn+Bridge,New+York,NY"
    />
  )
}

Параметры

Параметры для передачи в Google Maps Embed. Полный список параметров см. в документации Google Map Embed.

НазваниеТипОписание
apiKeyОбязательныйВаш API-ключ.
modeОбязательныйРежим карты
heightОпциональныйВысота встраиваемого контента. По умолчанию auto.
widthОпциональныйШирина встраиваемого контента. По умолчанию auto.
styleОпциональныйСтили для iframe.
allowfullscreenОпциональныйСвойство для разрешения полноэкранного режима определённых частей карты.
loadingОпциональныйПо умолчанию lazy. Рекомендуется изменить, если вы знаете, что контент будет выше сгиба.
qОпциональныйОпределяет местоположение маркера на карте. Может быть обязательным в зависимости от режима карты.
centerОпциональныйОпределяет центр области просмотра карты.
zoomОпциональныйУстанавливает начальный уровень масштабирования карты.
maptypeОпциональныйОпределяет тип загружаемых тайлов карты.
languageОпциональныйОпределяет язык для элементов интерфейса и подписей на тайлах карты.
regionОпциональныйОпределяет отображаемые границы и подписи с учётом геополитических особенностей.

YouTube Embed

Компонент YouTubeEmbed можно использовать для загрузки и отображения встраиваемого контента YouTube. Этот компонент загружается быстрее благодаря использованию lite-youtube-embed под капотом.

app/page.js
import { YouTubeEmbed } from '@next/third-parties/google'

export default function Page() {
  return <YouTubeEmbed videoid="ogfYd705cRs" height={400} params="controls=0" />
}

Параметры

НазваниеТипОписание
videoidОбязательныйИдентификатор видео YouTube.
widthОпциональныйШирина контейнера видео. По умолчанию auto
heightОпциональныйВысота контейнера видео. По умолчанию auto
playlabelОпциональныйСкрытая метка для кнопки воспроизведения для доступности.
paramsОпциональныйПараметры видеоплеера, определённые здесь.
Параметры передаются в виде строки запроса.
Например: params="controls=0&start=10&end=30"
styleОпциональныйИспользуется для применения стилей к контейнеру видео.