百度统计在vue单页应用中需适配路由变化,推荐启用后台单页应用模式;或用router.beforeeach手动埋点;亦可引入urlchangetracker插件;同时注意移除重复_trackpageview、处理referrer标签、环境判断及脚本加载位置。

Vue单页应用中,百度统计默认只在页面首次加载时触发一次,后续路由切换不刷新HTML,导致子页面访问无法被记录。核心解法是让统计行为与路由变化同步,而不是依赖页面重载。
启用百度统计的单页应用模式
这是最简方案,适合大多数项目。登录百度统计后台 → 管理 → 单页应用设置 → 开启开关并保存。该功能会自动监听 History API 或 hashchange 事件,无需额外写 JS 代码。注意:开启后必须移除项目中手动调用的 _trackPageview,否则会造成重复计数。
使用 router.beforeEach 手动埋点
适用于需要精确控制 PV 上报时机、或需兼容旧版百度统计 SDK 的场景。在 Vue Router 实例创建后,添加全局前置守卫:
调用百度PaddleOCR‑VL大模型API,支持PDF、Word、PPT、图片等多格式文档解析,精准识别印刷体、手写体、表格、公式、图表、印章等复杂元素,支持100+语言,可处理不规则布局和跨页长文档。触发词:文档解析、VLM解析、大模型OCR、PaddleOCR、多模态文档、手写识别、公式识别、复杂版面。
- 确保 _hmt 全局变量已声明(通常在 index.html 中初始化)
- 在 beforeEach 中调用 _hmt.push(['_trackPageview', '/#' + to.fullPath])
- 注意路径拼接格式:hash 模式需加 /# 前缀,history 模式直接传 to.fullPath
- 务必调用 next(),避免路由卡死
引入 UrlChangeTracker 插件
百度官方提供的轻量级插件,比手写守卫更稳定,支持 history 和 hash 两种路由模式。在 index.html 的统计代码块内添加:
var _hmt = _hmt || [];_hmt.push(['_requirePlugin', 'UrlChangeTracker', {
shouldTrackUrlChange: function (newPath, oldPath) {
return newPath && oldPath && newPath !== oldPath;
}
}]);
插件只允许调用一次,重复调用无效;可通过 shouldTrackUrlChange 函数自定义过滤逻辑,例如忽略 query 参数变化。
排查常见干扰项
即使代码逻辑正确,以下配置也可能导致统计失效:
-
meta referrer 标签:若页面含
<meta name="referrer" content="no-referrer">,会阻断百度统计脚本向服务端发送请求,需移除或改用其他图片防盗链方案 -
环境判断遗漏:开发环境误加统计代码,可能因跨域或本地服务未部署而上报失败;建议用
process.env.NODE_ENV === 'production'控制注入 -
代码加载位置错误:hm.js 必须放在










