{"id":19467832,"url":"https://github.com/wjtools/vue-stat","last_synced_at":"2025-04-25T11:32:08.664Z","repository":{"id":32910320,"uuid":"145816027","full_name":"wjtools/vue-stat","owner":"wjtools","description":"vue 统计埋点插件","archived":false,"fork":false,"pushed_at":"2022-12-08T20:51:55.000Z","size":4500,"stargazers_count":8,"open_issues_count":19,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-19T09:08:01.612Z","etag":null,"topics":["statistics","vuejs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wjtools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-23T07:16:59.000Z","updated_at":"2022-09-30T02:18:49.000Z","dependencies_parsed_at":"2023-01-14T22:45:50.460Z","dependency_job_id":null,"html_url":"https://github.com/wjtools/vue-stat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjtools%2Fvue-stat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjtools%2Fvue-stat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjtools%2Fvue-stat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wjtools%2Fvue-stat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wjtools","download_url":"https://codeload.github.com/wjtools/vue-stat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250808302,"owners_count":21490643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["statistics","vuejs"],"created_at":"2024-11-10T18:37:07.208Z","updated_at":"2025-04-25T11:32:07.876Z","avatar_url":"https://github.com/wjtools.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vue-stat\n\u003c!-- [![Build Status](https://travis-ci.org/wjtools/vue-stat.svg?branch=master)](https://travis-ci.org/wjtools/vue-stat) --\u003e\n\u003e vuejs 统计埋点插件，目前可适用于友盟和百度统计\n\n## 安装\n\n```shell\nnpm install vue-stat --save\n```\n\n在页面中引用\n```javascript\nimport stat from 'vue-stat'\n```\n\n使用插件\n```javascript\nVue.use(stat, 'YOUR_SITEID')\n```\n\n通过 options 参数进行更多设置\n```javascript\nVue.use(stat, options)\n```\n\n**options**\n\n| 参数 | 必输 | 默认 | 说明 | 备注 |\n|-----|------|-----|-----|------|\n| siteId | 是 | | 绑定要接受 API 请求的统计代码 siteid| |\n| site | 否 | https://hm.baidu.com/hm.js | 指定统计脚本的链接地址| |\n| debug | 否 | false | 调试模式下将在控制台中输出调用接口时传递的参数 | **请不要在生产环境中使用，避免造成安全隐患** |\n| autoPageview | 否 | true | 是否开启自动统计 PV | |\n| src | 否 | https://hm.baidu.com/hm.js?SITEID | 指定统计脚本标签的 src 属性 | **此设置会取代 siteId 和 site** |\n\n## API\n\n查看官方文档：[百度统计](http://tongji.baidu.com/open/api/more)；[友盟](http://open.cnzz.com/a/new/procedure/)\n\n**注意:** 所有 this 均为 Vue 实例\n\n### trackPageview\n\n用于发送某个 URL 的 PV 统计请求，适用于统计 AJAX、异步加载页面，友情链接，下载链接的流量。\n\n**用法**\n```javascript\nthis.$stat.trackPageview(path[, fromPath])\n```\n\n**参数**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| path | 是 | string | 指定 PV 页面的 URL 地址，必须是以\"/\"开头的相对路径 |\n| fromPath | 否 | string | 自定义来源页 URL 地址，建议填写该异步加载页面的母页面。**！！！仅友盟支持** |\n\n### trackEvent\n\n用于发送页面上按钮等交互元素被触发时的事件统计请求。如视频的“播放、暂停、调整音量”，页面上的“返回顶部”、“赞”、“收藏”等。也可用于发送 Flash 事件统计请求。\n\n**用法**\n```javascript\nthis.$stat.trackEvent(category, action[, label, value, nodeid])\n```\n\n**参数**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| category | 是 | string | 表示事件发生在谁身上，如“视频”、“小说”、“轮显层”等等。 |\n| action | 是 | string | 表示访客跟元素交互的行为动作，如\"播放\"、\"收藏\"、\"翻层\"等等。|\n| label | 否 | string | 用于更详细的描述事件，如具体是哪个视频，哪部小说。|\n| value | 否 | int | 用于填写打分型事件的分值，加载时间型事件的时长，订单型事件的价格。**详情见官方文档** |\n| nodeid | 否 | string | 填写事件元素的 div 元素 id。请填写 class id，暂不支持 name。**！！！仅友盟支持** |\n\n### setCustomVar\n\n用于发送为访客打自定义标记的请求，用来统计会员访客、登录访客、不同来源访客的浏览数据。\n\n**用法**\n```javascript\nthis.$stat.setCustomVar(name, value[, time])\n```\n\n**参数-友盟**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| name | 是 | string | 自定义访客种类，用来描述观察访客的角度，如“会员级别”、“访客来源”等等。 |\n| value | 是 | string | 自定义访客值，表示对访客类型的具体描述，如\"VIP1\"、\"VIP2\"等等。|\n| time | 否 | int | 有效时长，表示本自定义访客标记的生效时长。 不填或1-表示长期有效；0-表示仅在发包页面有效；2-表示仅在本访次有效。填具体数值，表示生效时长，单位“秒”。|\n\n**参数-百度统计**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| index | 是 | int | 自定义变量所占用的位置，索引的范围是从 1 到 5 |\n| name | 是 | string | 自定义访客种类，用来描述观察访客的角度，如“会员级别”、“访客来源”等等。 |\n| value | 是 | string | 自定义访客值，表示对访客类型的具体描述，如\"VIP1\"、\"VIP2\"等等。|\n| scope | 否 | int | 自定义变量的作用范围：1为访客级别（对该访客始终有效）2为访次级别（在当前访次内生效）3为页面级别（仅在当前页面生效）默认为3。|\n\n\n### setAccount\n\n当您的页面上添加了多个CNZZ统计代码时，需要用到本方法绑定需要哪个 siteid 对应的统计代码来接受 API 发送的请求。未绑定的 siteid 将忽略相关请求。\n\n**备注：** 一般情况下无需调用该方法，只需调用 Vue.use 时直接传递 siteId 或通过 options.siteId 传递即可\n\n**用法**\n```javascript\nthis.$stat.setAccount(siteid)\n```\n\n**参数**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| siteid | 是 | int | 绑定要接受API请求的统计代码 siteid。 |\n\n### setAutoPageview\n\n如果您使用 _trackPageview 改写了已有页面的 URL，那么建议您在统计代码执行前先调用 _setAutoPageview，将该页面的自动PV统计关闭，防止页面的流量被统计双倍。\n\n**备注：** 在调用 Vue.use 时可通过 options.autoPageview 设置初始值，默认为 true\n\n**用法**\n```javascript\nthis.$stat.setAutoPageview(autopageview)\n```\n\n**参数**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| autopageview | 是 | boolean | 是否自动发送页面 PV 的统计请求，默认为true。 |\n\n### deleteCustomVar\n\n发送删除自定义访客标签的请求。将访客身上已被标记的自定义访客类型去掉，去掉后不再继续统计。**！！！此方法仅友盟支持**\n\n**用法**\n```javascript\nhis.$stat.deleteCustomVar(name)\n```\n\n**参数**\n\n| 参数 | 必输 | 类型 | 说明 |\n|-----|------|-----|-----|\n| name | 是 | string | 需要被删除的自定义访客类型。填写自定义访客类型种类名 name。 |\n\n### ready\n\n当需要严格控制加载时序时，可使用 ready 方法。该方法返回一个 promise，当外部统计脚本加载完毕，全局 _czc/_hmt 对象存在时，promise 被 resolve。\n\n**用法**\n```javascript\nthis.$stat.ready().then(() =\u003e {\n  ...\n}).catch(() =\u003e {\n  ... // error handling here\n})\n\n// 使用 async await, 建议使用 try/catch 避免加载失败影响主程序\nasync SOME_METHOD () {\n  try {\n    await this.$stat.ready()\n    ...\n  } catch (e){\n    ... // error handling here\n  }\n}\n```\n\n## 指令\n\nvue-stat 提供 stat-event，stat-pageview 和 auto-pageview 三个指令，开发者可以直接在 html 模版中使用来统计网站数据\n\n### stat-event\n\n使用指令 v-stat-event 监听事件， 通过 modifiers 指定事件类型，将自动为绑定元素添加事件监听，当事件触发调用统计代码。 如不指定事件，默认监听 click 事件。\n\n可通过逗号分隔的字符串或对象字面量传递参数，以字符串传递时请注意参数顺序，可参考 trackEvent API。\n\n**用法**\n```html\n\u003cbutton v-stat-event=\"'category, action'\"\u003e\u003c/button\u003e // 统计 click 事件简写\n\n\u003cbutton v-stat-event.click=\"'category, action''\"\u003e\u003c/button\u003e // 统计 click 事件\n\n\u003cinput v-stat-event.keypress=\"'category, action'\"\u003e // 统计keypress事件\n\n\u003cbutton v-stat-event=\"'category, action, label, value, nodeid'\"\u003e\u003c/button\u003e // 以字符串传递参数\n\n\u003cbutton v-stat-event=\"{category: 'category', action: 'action'}\"\u003e\u003c/button\u003e // 以对象字面量传递参数\n```\n\n### stat-pageview\n\n使用指令 stat-pageview 统计虚拟 PV ，一般可以配合 v-show 或 v-if 来统计局部动态视图的 PV。\n\n可通过逗号分隔的字符串或对象字面量传递参数，以字符串传递时请注意参数顺序，可参考 trackPageview API。\n\n**用法**\n```html\n\u003cdiv v-show=\"show\" v-stat-pageview=\"'/bar'\"\u003ebar\u003c/div\u003e //  跟踪 v-show 绑定元素的虚拟 pv\n\n\u003cdiv v-if=\"show\" v-stat-pageview=\"'/foo'\"\u003efoo\u003c/div\u003e // 跟踪 v-if 绑定元素的虚拟pv\n\n\u003cdiv v-stat-pageview=\"'/tar, https://github.com/'\"\u003e\u003c/div\u003e // 以字符串指定受访页面和来源\n\n\u003cdiv v-stat-pageview=\"{path: '/zoo', fromPath: 'https://github.com/'}\"\u003e\u003c/div\u003e // 以对象字面量指定受访页面和来源\n```\n\n### auto-pageview\n\n使用指令 auto-pageview 开关自动统计\n\n**用法**\n``` html\n\u003cdiv v-auto-pageview=true\u003e\u003c/div\u003e // 启用 auto-pageview\n\n\u003cdiv v-auto-pageview=false\u003e\u003c/div\u003e // 停止 auto-pageview\n```\n\n## 默认参数和改变参数顺序\n\n认情况下，vue-stat 并不提供默认参数和参数顺序的设置，但开发者可以根据需求，使用装饰器模式，来提供默认参数和改变参数顺序。\n\n例如：我们想在监听事件时默认 category，只需要传递 action，则代码如下\n\n```javascript\nlet trackEvent = stat.trackEvent\nstat.trackEvent = (action, category = 'default') =\u003e {\n  trackEvent.call(stat, category, action)\n}\n\nVue.use(stat,'YOUR_SITEID')\n```\n\n## 参考项目\n\n[vue-uweb](https://github.com/raychenfj/vue-uweb)\n\n[vue-ba](https://github.com/minlingchao1/vue-ba)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwjtools%2Fvue-stat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwjtools%2Fvue-stat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwjtools%2Fvue-stat/lists"}