最近前端开发中越来越多的使用到了单页面+多路由的方式。这种单页面应用有很多优势:让用户体验更好、更快,后端只需要关注数据接口,实现了前后端分离;但同时也带来了数据埋点相关的问题。

问题描述

众所周知,单页面应用无论跳转到哪个页面,body 标签始终是不变的,因为用的是同一个 body。而 SPM 埋点的 B 位(代表是哪个页面的标志位)就是埋在 body 标签上,这样就带来了三个问题:

解决方案

1. 添加 mata 信息

<meta name="data-spm" data-spm-protocol="i">

<meta name="aplus-wating" content="MAN">

2. 修改 SPM

3. 用新的 spm 发送日志

如何使用 aplus 最新脚本

有两种方式:

如果你的应用 beacon 模块注入的 aplus 脚本不是以上两者,可能已经过时,需要修改 beacon 配置。具体可参考 aplus 官方的 阿里日志接入指南

方案实例(更推荐使用@alife/set-spm)

比如服务市场无线的首页 spm 为 a1z8w.8005165,而订单列表页的 spm 为 a1z8w.8005215,那么订单列表页加载后就需要加一个修改 SPM 和发送打点日志的逻辑:

componentDidMount() {
    // 注:goldlog的加载是异步的,页面加载完成后不一定已经有goldlog对象
    let goldlogTimer = setInterval(() => {
        if(window.goldlog){
            // 手动修改spm-b位,并发送正确的spm统计信息
            window.goldlog.setPageSPM && window.goldlog.setPageSPM('a1z8w', '8005215');
            window.goldlog.sendPV && window.goldlog.sendPV({page_id: '', checksum: "46807199"});
            clearInterval(goldlogTimer);
        }
    }, 1000);
}

更多

更多关于埋点的相关问题,可以参考: