使用npm 或 yarn 或 pnpm 安装依赖?
npm install --save sa-sdk-javascript
定义环境变量?VITE_PROJECT_ENV (prod demo test)
import sensors from 'sa-sdk-javascript';
const ENV = import.meta.env.VITE_PROJECT_ENV as string;
if (['test', 'prod', 'dev'].includes(ENV as string)) {
console.log('ENV', ENV);
sensors.init({
server_url: `https://数据接收地址.com/sa?project=${ENV === 'prod' ? 'production' : 'default'}`, // 数据接收地址
is_track_single_page: true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
use_client_time: true,
send_type: 'beacon',
show_log: false, // 控制台显示数据开
heatmap: {
//是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
clickmap: 'not_collect',
//是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
scroll_notice_map: 'not_collect',
},
});
// 公共属性埋点
sensors.registerPage({
platform_type: 'hd-sensors, // 项目标识
});
sensors.quick('autoTrack'); // 首次触发页面加载事件
export default sensors
将神策埋点信息挂载到?vue?实例下
import sensors from '@/utils/sensors.js'
Vue.prototype.$sensors = sensors
或直接通过window获取实例
const sensors: any = window['sensorsDataAnalytic201505' as any];
sensors.track('点击事件名'); // 点击
?3s算一次曝光 可写在路由拦截中
let timer: any = null;
let currentRoute: any = null;
router.beforeEach((to, from, next) => {
// 如果当前路由和上一个路由相同,则不重新计时
if (to.path === currentRoute) {
next();
return;
}
// 清除之前的计时器
clearTimeout(timer);
// 设置当前路由
currentRoute = to.path;
// 开始新的计时器
timer = setTimeout(() => {
// 在这里执行曝光统计的逻辑
console.log('曝光统计', to.path);
// 神策传参须传递对象
const payload = { view: to.path };
sensors.track('事件名', payload);
}, 3000);
next();
});