跳到内容
Pages 路由指南第三方库

如何优化第三方库

@next/third-parties 是一个库,提供了一系列组件和实用工具,可以提高 Next.js 应用程序中加载常用第三方库的性能和开发体验。

@next/third-parties 提供的所有第三方集成都经过优化,以实现最佳性能和易用性。

开始使用

首先,安装 @next/third-parties

终端
npm install @next/third-parties@latest next@latest

@next/third-parties 目前是一个实验性库,正在积极开发中。在我们添加更多第三方集成时,建议使用 latestcanary 标志进行安装。

Google 第三方

所有受支持的 Google 第三方库都可以从 @next/third-parties/google 导入。

Google 跟踪代码管理器

GoogleTagManager 组件可用于在页面上实例化一个 Google 跟踪代码管理器 容器。默认情况下,它会在页面水合后获取原始内联脚本。

要为所有路由加载 Google 跟踪代码管理器,请将组件直接包含在自定义 _app 中,并传入您的 GTM 容器 ID

pages/_app.js
import { GoogleTagManager } from '@next/third-parties/google'
 
export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
      <GoogleTagManager gtmId="GTM-XYZ" />
    </>
  )
}

要为单个路由加载 Google 跟踪代码管理器,请将组件包含在您的页面文件中

pages/index.js
import { GoogleTagManager } from '@next/third-parties/google'
 
export default function Page() {
  return <GoogleTagManager gtmId="GTM-XYZ" />
}

发送事件

sendGTMEvent 函数可用于通过使用 dataLayer 对象发送事件来跟踪页面上的用户交互。要使此函数工作,<GoogleTagManager /> 组件必须包含在父布局、页面或组件中,或直接在同一文件中。

pages/index.js
import { sendGTMEvent } from '@next/third-parties/google'
 
export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
      >
        Send Event
      </button>
    </div>
  )
}

请参阅跟踪代码管理器开发者文档,了解可传递到函数中的不同变量和事件。

服务器端标记

如果您正在使用服务器端标记管理器并从您的标记服务器提供 gtm.js 脚本,您可以使用 gtmScriptUrl 选项来指定脚本的 URL。

选项

要传递给 Google 跟踪代码管理器的选项。有关选项的完整列表,请阅读Google 跟踪代码管理器文档

名称类型描述
gtmId必需您的 GTM 容器 ID。通常以 GTM- 开头。
gtmScriptUrl可选GTM 脚本 URL。默认为 https://#/gtm.js
dataLayer可选用于实例化容器的数据层对象。
dataLayerName可选数据层的名称。默认为 dataLayer
auth可选用于环境代码段的身份验证参数 (gtm_auth) 的值。
preview可选用于环境代码段的预览参数 (gtm_preview) 的值。

Google Analytics(分析)

GoogleAnalytics 组件可用于通过 Google 代码 (gtag.js) 将 Google Analytics 4 包含到您的页面中。默认情况下,它在页面水合后获取原始脚本。

建议:如果您的应用程序中已经包含了 Google 跟踪代码管理器,您可以直接使用它配置 Google Analytics,而不是将 Google Analytics 作为单独的组件包含进来。请参阅 文档,了解有关跟踪代码管理器和 gtag.js 之间差异的更多信息。

要为所有路由加载 Google Analytics(分析),请将组件直接包含在自定义 _app 中,并传入您的测量 ID

pages/_app.js
import { GoogleAnalytics } from '@next/third-parties/google'
 
export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
      <GoogleAnalytics gaId="G-XYZ" />
    </>
  )
}

要为单个路由加载 Google Analytics,请将组件包含在您的页面文件中

pages/index.js
import { GoogleAnalytics } from '@next/third-parties/google'
 
export default function Page() {
  return <GoogleAnalytics gaId="G-XYZ" />
}

发送事件

sendGAEvent 函数可用于通过使用 dataLayer 对象发送事件来测量页面上的用户交互。要使此函数工作,<GoogleAnalytics /> 组件必须包含在父布局、页面或组件中,或直接在同一文件中。

pages/index.js
import { sendGAEvent } from '@next/third-parties/google'
 
export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGAEvent('event', 'buttonClicked', { value: 'xyz' })}
      >
        Send Event
      </button>
    </div>
  )
}

请参阅 Google Analytics(分析)开发者文档,了解有关事件参数的更多信息。

跟踪页面浏览量

当浏览器历史状态改变时,Google Analytics(分析)会自动跟踪页面浏览量。这意味着 Next.js 路由之间的客户端导航将发送页面浏览数据,无需任何配置。

为了确保正确测量客户端导航,请验证在您的管理面板中已启用“增强型测量”属性,并选中了“基于浏览器历史记录事件的页面更改”复选框。

注意:如果您决定手动发送页面浏览事件,请务必禁用默认页面浏览测量,以避免数据重复。请参阅 Google Analytics(分析)开发者文档以了解更多信息。

选项

要传递给 <GoogleAnalytics> 组件的选项。

名称类型描述
gaId必需您的测量 ID。通常以 G- 开头。
dataLayerName可选数据层的名称。默认为 dataLayer
nonce可选一个nonce

Google 地图嵌入

GoogleMapsEmbed 组件可用于将Google 地图嵌入添加到您的页面。默认情况下,它使用 loading 属性在首屏下方延迟加载嵌入。

pages/index.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 地图嵌入的选项。有关选项的完整列表,请阅读Google 地图嵌入文档

名称类型描述
apiKey必需您的 API 密钥。
mode必需地图模式
height可选嵌入的高度。默认为 auto
width可选嵌入的宽度。默认为 auto
style可选将样式传递给 iframe。
allowfullscreen可选允许某些地图部分全屏的属性。
loading可选默认为懒加载。如果您知道嵌入将在首屏上方,请考虑更改。
q可选定义地图标记位置。根据地图模式,这可能是必需的
center可选定义地图视图的中心。
zoom可选设置地图的初始缩放级别。
maptype可选定义要加载的地图图块类型。
language可选定义用于 UI 元素和地图图块上标签显示的语言。
region可选根据地缘政治敏感性,定义要显示适当的边界和标签。

YouTube 嵌入

YouTubeEmbed 组件可用于加载和显示 YouTube 嵌入。此组件通过在底层使用lite-youtube-embed来加快加载速度。

pages/index.js
import { YouTubeEmbed } from '@next/third-parties/google'
 
export default function Page() {
  return <YouTubeEmbed videoid="ogfYd705cRs" height={400} params="controls=0" />
}

选项

名称类型描述
videoid必需YouTube 视频 ID。
width可选视频容器的宽度。默认为 auto
height可选视频容器的高度。默认为 auto
playlabel可选播放按钮的视觉隐藏标签,用于辅助功能。
params可选此处定义的视频播放器参数here
参数作为查询参数字符串传递。
例如:params="controls=0&start=10&end=30"
style可选用于将样式应用于视频容器。