第三方库
@next/third-parties
是一个库,提供了一组组件和实用工具,
可改善在 Next.js 应用程序中加载流行第三方库的性能和开发人员体验。
@next/third-parties
是一个新的实验性库,仍在积极开发中。我们目前正在努力添加更多的第三方集成。
@next/third-parties
提供的所有第三方集成都经过了性能和易用性的优化。
入门
要开始使用,必须安装 @next/third-parties
库:
# 终端
npm install @next/third-parties
Google 第三方库
所有来自 Google 的支持的第三方库都可以从 @next/third-parties/google
中导入。
Google Tag Manager
GoogleTagManager
组件可用于向您的页面实例化
Google Tag Manager
容器。
默认情况下,在页面上进行 hydration 后,它会获取原始的内联脚本。
要为所有路由加载 Google Tag Manager,请直接将该组件包含在根布局中:
import { GoogleTagManager } from '@next/third-parties/google'
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body>{children}</body>
<GoogleTagManager gtmId="GTM-XYZ" />
</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 开发者文档。
选项
传递给 Google Tag Manager 的选项。有关所有选项的完整列表,请阅读 Google Tag Manager 文档。
名称 | 类型 | 描述 |
---|---|---|
gtmId | Required | 您的 GTM 容器 ID。 |
dataLayer | Optional | 用于实例化容器的数据层数组。默认为空数组。 |
dataLayerName | Optional | 数据层的名称。默认为 dataLayer 。 |
auth | Optional | 用于环境片段的身份验证参数(gtm_auth )的值。 |
preview | Optional | 用于环境片段的预览参数(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,请直接将该组件包含在根布局中:
import { GoogleAnalytics } from '@next/third-parties/google'
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body>{children}</body>
<GoogleAnalytics gaId="GA-XYZ" />
</html>
)
}
要为单个路由加载 Google Analytics,请在页面文件中包含该组件:
import { GoogleAnalytics } from '@next/third-parties/google'
export default function Page() {
return <GoogleAnalytics gaId="GA-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 开发者文档。
选项
传递给 <GoogleAnalytics>
组件的选项。
名称 | 类型 | 描述 |
---|---|---|
gaId | Required | 您的 Google 标签 ID。 |
dataLayerName | Optional | 数据层的名称。默认为 dataLayer 。 |
Google Maps Embed
GoogleMapsEmbed
组件可用于向您的页面添加
Google Maps 嵌入。
默认情况下,它使用 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 地图嵌入文档。
名称 | 类型 | 描述 |
---|---|---|
apiKey | Required | 您的 API 密钥。 |
mode | Required | 地图模式。 |
height | Optional | 嵌入的高度。默认为自动。 |
width | Optional | 嵌入的宽度。默认为自动。 |
style | Optional | 将样式传递给 iframe。 |
allowfullscreen | Optional | 允许某些地图部分全屏显示的属性。 |
loading | Optional | 默认为 lazy。如果您知道您的嵌入将在视图之上,请考虑更改。 |
q | Optional | 定义地图标记位置。具体取决于地图模式是否需要。 |
center | Optional | 定义地图视图的中心。 |
zoom | Optional | 设置地图的初始缩放级别。 |
maptype | Optional | 定义要加载的地图瓦片的类型。 |
language | Optional | 定义用于 UI 元素和地图瓦片标签显示的语言。 |
region | Optional | 根据地缘政治的敏感性定义要显示的适当边界和标签。 |
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 | Required | YouTube 视频 ID。 |
width | Optional | 视频容器的宽度。默认为自动。 |
height | Optional | 视频容器的高度。默认为自动。 |
playlabel | Optional | 用于无障碍性的播放按钮的可见标签。 |
params | Optional | 在此定义的视频播放器参数。参数作为查询参数字符串传递。例如:params="controls=0&start=10&end=30" 。 |
style | Optional | 用于将样式应用于视频容器。 |