框架与采集域名
先安装控制台提供的 tgz;公共 npm 发布后,可用 npm install @antdock/tracker。包名与域名独立,所有示例显式指定长期保留的采集地址。不要同时安装 Script 和 npm 两份 tracker。
React / Next.js App Router
在根布局中挂载一次客户端组件。SDK 自动监听 history 与 Hash 路由,不再在 pathname effect 中补发 PV。
'use client'
import { useEffect } from 'react'
import { createTrackerIntegration } from '@antdock/tracker/integration'
const analytics = createTrackerIntegration({
appId: 'YOUR_APP_ID', endpoint: 'https://YOUR_COLLECTOR',
release: 'YOUR_RELEASE', consentRequired: true,
})
export default function Analytics() {
useEffect(() => analytics.mount(), [])
return null
}
// CMP 确认后:analytics.tracker.setConsent(true)
// 拒绝或撤回:analytics.tracker.setConsent(false)
工厂在 SSR 时不操作 DOM、标识或网络。适配器计数挂载者,兼容 Strict Mode 清理和重挂载。应用级初始化配置保持稳定;不要随每个页面创建一个实例。
Vue / Nuxt
// 放在应用根组件;Nuxt 也可放在 .client.ts 插件中。
import { onMounted, onUnmounted } from 'vue'
import { createTrackerIntegration } from '@antdock/tracker/integration'
const analytics = createTrackerIntegration({ appId: 'YOUR_APP_ID', endpoint: 'https://YOUR_COLLECTOR' })
let stop: (() => void) | undefined
onMounted(() => { stop = analytics.mount() })
onUnmounted(() => stop?.())
Svelte / SvelteKit
<script lang="ts">
import { onMount } from 'svelte'
import { createTrackerIntegration } from '@antdock/tracker/integration'
const analytics = createTrackerIntegration({ appId: 'YOUR_APP_ID', endpoint: 'https://YOUR_COLLECTOR' })
onMount(() => analytics.mount())
</script>
Astro、普通 HTML 与 GTM
控制台一键复制的 Script 放在网站公共布局中一次。GTM 使用 Custom HTML,触发 All Pages 一次;同意要求开启时先暂存 init,并由 CMP 显式调用 setConsent。自动路由已开启时不要再用 History Change 标签发送 PV。Script 支持 data-spa-routing、data-release、data-breadcrumbs 与 data-long-tasks。
自己的网站做第一方代理
以 Nginx 为例,用与网站相同域的 /telemetry/ 转发到 AntDock;SDK 将 endpoint 设为 https://你的站点/telemetry。Script 安装地址为 /telemetry/static/tracker.js,必须设置 data-endpoint="https://你的站点/telemetry" 或使用控制台完整 init 代码。
location /telemetry/ {
proxy_pass https://antdock.com/;
proxy_ssl_server_name on;
proxy_set_header Host antdock.com;
proxy_set_header Cookie "";
proxy_set_header Authorization "";
proxy_hide_header Set-Cookie;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
SDK 配置接口和采集请求不要缓存。服务器只信任配置过的代理链;自行部署需维护 TRUSTED_PROXIES,不能信任浏览器伪造的 X-Forwarded-For。第三方客户代理不应获得全局可信 IP 权限;必要时不使用代理转发的原始 IP。
品牌域名、采集域名、npm 包名是三个独立设置。服务端 TRACKING_URL / 控制台 brandingTrackingUrl 统一生成一键复制代码。迁移时先让新地址提供同样的脚本、配置和采集接口,再改此设置并更新自己的站点。仍使用旧代码时,旧域名直接代理,避免用跳转承接 Beacon。域名与 DNS 权属未明确前不自动注册或替换域名。