前言
之前做到了一个页面及接口访问流量统计的需求, 然后在网上找了很多帖子,发现有些有的但是写的都不是很详细,所以今天就整理了一下
正文
第一步
首先自然是引入matomo
npm i vue-matomo
第二步
在main.js中注册一下matomo
import VueMatomo from 'vue-matomo' Vue.use(VueMatomo, { host: 'http://matomo.na.xyz', // 这里配置你自己的piwik服务器地址和网站ID siteId: 3,//siteId值 // 根据router自动注册 router: router, // // 是否需要在发送追踪信息之前请求许可 // // 默认false requireConsent: false, enableLinkTracking: true, // // 是否追踪初始页面 // // 默认true trackInitialView: false, // // 最终的追踪js文件名 // // 默认 'piwik' trackerFileName: 'matomo', debug: false });
当然这里也可以提出一个公共的文件来动态维护你的piwik服务器地址和网站
import VueMatomo from 'vue-matomo' // 动态维护的文件 import baseUrlto from './utils/baseUrlto' // 这段代码作用是获取当前加载的路径,并去维护文件中数组里匹配出相应的的集合对象. let uitem baseUrlto.map(e => { if (document.URL.indexOf(e.environmentUrl) !== -1) { uitem = e } }) if (!uitem) { uitem = baseUrlto[0] } Vue.use(VueMatomo, { host: uitem.staUrl, // 这里是匹配到的地址 siteId: uitem.staId, //这里是匹配到的siteId值 // 根据router自动注册 router: router, // // 是否需要在发送追踪信息之前请求许可 // // 默认false requireConsent: false, enableLinkTracking: true, // // 是否追踪初始页面 // // 默认true trackInitialView: false, // // 最终的追踪js文件名 // // 默认 'piwik' trackerFileName: 'matomo', debug: false });
附上baseUrlto的代码
const statistics = [ // 数组第一项,即为,当路径匹配不到时,默认传送的统计网址,可以是开发环境下测试统计的地址 { staUrl: '//analytics.baowei-inc.com/', // 统计网址 staId: '2', // 统计ID environmentUrl: '默认' }, { staUrl: '//analytics.baowei-inc.com/', // 开发环境统计网址 staId: '2', // 统计ID environmentUrl: 'http://bwcaigou.baowei-inc.com' }, { staUrl: '//analytics.baowei-inc.com/', // 生产环境统计网址 staId: '1', // 统计ID environmentUrl: 'http://portal.baowei-inc.com' }, { staUrl: '//106.12.95.245:8888/', // 本地环境统计网址 staId: '2', // 统计ID environmentUrl: 'http://localhost:' } ] export default statistics
第三步 ,是在app.vue中监听路由变化
watch: { '$route' () { let locationHash = window.location.hash; //把路由存在缓存中,此处你可以console.log看出路由变化 sessionStorage.setItem("hashLocation",locationHash); } },
第四步, 然后在每一个被跳转时都需要统计的组件中,添加上一段追踪信息的代码,每一个页面组件, 对于反复使用的子组件不需要添加,弹窗等也不需要,针对的是页面级得组件,
// 这里说明一下, this.$matomo是注册过后,自动会有得, 不需要进行其他得操作. created(){ const hashLocation= sessionStorage.getItem("hashLocation");//缓存中获取当前页面的路由名称 const newLocation = hashLocation.split("#/")[1]; // 注意, 这里使用全路径匹配,在hash模式中,因为地址会携带#,所以页面报告中的url需要重新覆盖一下, 将#去除 this.$matomo.setCustomUrl("http:baidu.com"+"/"+newLocation);//覆盖页面报告的url,可以自定义页面url,加上本页面路由 // this.$matomo.trackEvent(shopCode,hashLocation);//事件 this.$matomo.trackPageView(hashLocation);//页面名称,可以自定义页面名称 }
图片现在上传不了,稍后回去上传上来,
特地说明一下, setCustomUrl的作用是重新设定url,因为在matomo的页面网址统计那块中,它是通过url去统计的, 如果不做处理的话, 会自动统计域名后一级目录为相同页面, 也就是说, /#/会被读取为一个页面网址,不处理的话,那么无论访问哪个页面,都会被统计为/index页面.
// 注意, 这里使用全路径匹配,在hash模式中,因为地址会携带#,所以页面报告中的url需要重新覆盖一下, 将#去除 this.$matomo.setCustomUrl("http:baidu.com"+"/"+newLocation);// 非全路径 this.$matomo.setCustomUrl("http://www.baidu.com"+"/"+newLocation); // 全路径 //覆盖页面报告的url,可以自定义页面url,加上本页面路由
重要的事说两遍, 需要全路径字符串, 否则依然会把#带上.
第五步, 其实到这里, 已经能正常统计数据了,下面是一些优化的步骤.
针对接口的统计
针对接口的统计就是在请求拦截器中添加发送统计信息的代码
import pathToname from '@/utils/pathname' // 请求拦截器 service.interceptors.request.use( config => { if (config.url.indexOf('/login') === -1) { // 设置用户名 const name = store.getters.name let urlName let curl = config.url curl = curl.split('"htmlcode">const changeName = { // goods相关API '/pdc/api/v1/dic/query': '基础档案管理-获取货品信息', '/pdc/api/v1/product/query': '基础档案管理-获取货品详情', // role相关API '/api/root/list': '基础-获取菜单权限', '/api/createRole': '权限管理-创建角色', '/api/checkRoleName': '权限管理-查询角色是否存在', '/api/custom/master/permission': '权限管理-获取外部客户角色列表', '/api/internal/user/info': '基础-获取用户信息', // statement相关API '/statement/financialForm': '财务管理-获取JIT财务列表', '/statement/export': '财务管理-导出JIT财务报表', '/statement/count': '财务管理-获取JIT数据总条目', // trade相关API(待定) // user相关API '/api/internal/user/list': '权限管理-获取外部用户列表', '/api/internal/custom/list': '权限管理-获取外部客户列表', '/user/create': '权限管理-创建用户', '/user/update': '权限管理-修改用户信息', '/api/user/password': '权限管理-修改用户密码', // 订单列表相关API '/order/api/v1/orderConfirmation': 'B2B交易管理-提交订单', '/order/api/v1/serviceApprove': 'B2B交易管理-确认订单', '/order/api/v1/serviceRefuse': 'B2B交易管理-拒绝订单', '/order/api/v1/getDispatchSelectInfo': 'B2B交易管理-获取订单字典数据', '/order/api/v1/import/productList': 'B2B交易管理-导入订单数据', '/order/api/v1/*/orderInformation': 'B2B交易管理-获取订单基本信息', '/order/api/v1/*/customerCode': 'B2B交易管理-检查客户代码是否存在', '/order/api/v1/*/discount': 'B2B交易管理-导入订单折扣', '/order/api/v1/*/occupyInventory': 'B2B交易管理-导出占库结果', '/order/api/v1/createDispatch': 'B2B交易管理-提交发货单', '/order/api/vi/dispatchCancel': 'B2B交易管理-取消发货单', '/order/api/vi/*/orderCancel': 'B2B交易管理-取消订单', '/order/api/v1/dispatchApprove': 'B2B交易管理-同意发货单', '/order/api/v1/dispatchRefuse': 'B2B交易管理-拒绝发货单', '/order//api/v1/confirmSubmissionApproval': 'B2B交易管理-订单提交审批', '/order/api/v1/orderStatus': 'B2B交易管理-获取订单状态', '/bff/api/v1/dispatch/*': 'ODS管理-获取发货单基本信息', '/bff/api/v1/receive/*': 'ODS管理-获取收货单基本信息', '/bff/api/v1/vend-cust': 'ODS管理-获取客商列表信息', '/bff/api/v1/warehouses': 'ODS管理-实时获取仓库信息', '/bff/api/v1/dict/type': 'ODS管理-仓库类型查询', '/bff/api/v1/dispatch/_export': 'ODS管理-导出发货单信息', '/bff/api/v1/receive/_export': 'ODS管理-导出收货单信息', '/bff/api/v1/dict/type/_list': 'ODS管理-查询字典数据', '/bff/api/v1/dispatch/_page': 'ODS管理-查询发货单列表', '/order/api/v1/orderList': 'B2B交易管理-查询订单列表', '/order/api/v1/orderDetail': 'B2B交易管理-获取订单商品列表', '/order/api/v1/orderDispatchInfo': 'B2B交易管理-获取订单发货单信息', '/order/api/v1/dispatchList': 'B2B交易管理-获取订单发货单列表', '/order/api/v1/confirm': 'B2B交易管理-修改占库结果', '/order/api/v1/toBeConfirmedDispatch': 'B2B交易管理-查看历史发货单信息', '/order/api/v1/cumulativeState': 'B2B交易管理-获取占库结果信息' } export default changeName其他的就不赘述了,中文转化方面, 各人有各人的理解, 能达到效果就行.
js方式的统计也是类似的.有需要的话,评论留言,我后续传上来.
结语
Vue-matomo流量统计这块,就算整理完成了, 实际项目中已经正常使用,所以正常来讲应该不会出现问题. 加油, 各位
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]