第三方库
@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 容器。默认情况下,它会在页面 hydration 发生后获取原始的内联脚本。
要为所有路由加载 Google Tag Manager,请直接在你的根布局中包含该组件,并传入你的 GTM 容器 ID
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>
)
}
要为单个路由加载 Google Tag Manager,请在你的页面文件中包含该组件
import { GoogleTagManager } from '@next/third-parties/google'
export default function Page() {
return <GoogleTagManager gtmId="GTM-XYZ" />
}
发送事件
sendGTMEvent
函数可以用于通过使用 dataLayer
对象发送事件来跟踪用户在你页面上的互动。为了使此函数工作,<GoogleTagManager />
组件必须包含在父级布局、页面或组件中,或者直接在同一个文件中。
'use client'
import { sendGTMEvent } from '@next/third-parties/google'
export function EventButton() {
return (
<div>
<button
onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
>
Send Event
</button>
</div>
)
}
请参阅 Tag Manager 开发者文档,以了解可以传递给函数的不同变量和事件。
服务器端标记
如果你正在使用服务器端标签管理器并从你的标记服务器提供 gtm.js
脚本,你可以使用 gtmScriptUrl
选项来指定脚本的 URL。
选项
传递给 Google Tag Manager 的选项。有关完整选项列表,请阅读 Google Tag Manager 文档。
名称 | 类型 | 描述 |
---|---|---|
gtmId | 必需 | 你的 GTM 容器 ID。通常以 GTM- 开头。 |
gtmScriptUrl | 可选 | GTM 脚本 URL。默认为 https://127.0.0.1/gtm.js 。 |
dataLayer | 可选 | 用于实例化容器的数据层对象。 |
dataLayerName | 可选 | 数据层的名称。默认为 dataLayer 。 |
auth | 可选 | 用于环境代码段的身份验证参数 (gtm_auth ) 的值。 |
preview | 可选 | 用于环境代码段的预览参数 (gtm_preview ) 的值。 |
Google Analytics
GoogleAnalytics
组件可以用于通过 Google 标签 (gtag.js
) 在你的页面中引入 Google Analytics 4。默认情况下,它会在页面 hydration 发生后获取原始脚本。
推荐:如果您的应用中已包含 Google Tag Manager,您可以直接使用它来配置 Google Analytics,而不是将 Google Analytics 作为单独的组件引入。请参阅文档,以了解有关 Tag Manager 和
gtag.js
之间差异的更多信息。
要为所有路由加载 Google Analytics,请将该组件直接包含在您的根布局中,并传入您的 Measurement ID
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>
)
}
要为单个路由加载 Google Analytics,请将该组件包含在您的页面文件中
import { GoogleAnalytics } from '@next/third-parties/google'
export default function Page() {
return <GoogleAnalytics gaId="G-XYZ" />
}
发送事件
sendGAEvent
函数可用于通过使用 dataLayer
对象发送事件来衡量用户在您页面上的互动。要使此函数生效,<GoogleAnalytics />
组件必须包含在父布局、页面或组件中,或者直接包含在同一文件中。
'use client'
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 | 必需 | 您的 Measurement ID。通常以 G- 开头。 |
dataLayerName | 可选 | 数据层的名称。默认为 dataLayer 。 |
nonce | 可选 | nonce。 |
Google Maps Embed
GoogleMapsEmbed
组件可用于向您的页面添加 Google Maps Embed。默认情况下,它使用 loading
属性来延迟加载折叠下方的嵌入。
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 | 可选 | 定义用于 UI 元素和地图瓦片上标签显示的语言。 |
region | 可选 | 根据地缘政治敏感性,定义要显示的适当边界和标签。 |
YouTube Embed
YouTubeEmbed
组件可用于加载和显示 YouTube 嵌入。此组件通过使用底层的 lite-youtube-embed
加快加载速度。
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 | 可选 | 用于将样式应用于视频容器。 |
这是否有帮助?