# client-stat
**Repository Path**: ireadercity/client-stat
## Basic Information
- **Project Name**: client-stat
- **Description**: 基于客户端的自主埋点
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2018-08-07
- **Last Updated**: 2022-01-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# client-stat
[旧版本文档](https://gitee.com/ireadercity/client-stat/blob/master/old/README.md)
> 简介
前端埋点,支持:
* 页面上报
* 节点在窗口内上报
* 点击上报
* 已上报记录(参数可选)
* 上报数据以pipe形式进行操作(添加数据、修改上报格式等)
* 可以添加插件控制pipe
* 监听上报页面路径并可修改数据
> 安装依赖
npm install --save stat
> 初始化
```js
import Stat from 'stat'
const stat = new Stat(params)
```
> 参数(params)
| key | type | description |
| :---: | :---: | :--- |
| report | Function | 接收上报参数的方法 |
| url | String | 请求地址(未传上报方法时可以使用内置请求) |
| offset | Number | 路径偏移,用作节点存储的key。
如使用 vue 且有 router 并填写了 base url 则传1,如:/xxx/yyy/zzz -> 传 0 时取xxx,传 1 时取 yyy |
| showConsole | Boolean | 展示上报数据 |
| oncePageView | Boolean | 页面展示上报缓存 |
| onceNodeView | Boolean | 节点展示上报缓存 |
| closeAutoNodeReport | Boolean | 关闭自动节点展示上报 |
| plugins | Array<Object | Function> | 插件,接收对象(对象时执行其中的apply方法)或函数,并传入当前stat实例 |
> API(Stat构造函数)
| name | description | use | params |
| :---: | :--- | :--- | :--- |
| listen | 监听上报路径,添加默认参数,在获取默认值之前执行 | Stat.listen(reg, pipe) | reg 匹配路径
pipe 改变单个数据的方法,该方法接收单个上报数据 |
| pipe | 添加数据处理钩子,在获取默认值之后,在上报之前执行 | Stat.pipe(pipe) | pipe 改变整个上报数据的方法,该方法接收这次上报的所有数据 |
| on | 监听钩子 | Stat.on(type, callback) | type 监听类型 callback 回调函数
type类型支持: report -> 上报完成钩子,callback(error, successData, sourceData) |
> API(stat实例)
| name | description | use | params |
| :---: | :--- | :--- | :--- |
| setOptions | 设置参数 | stat.setOptions(options) | options 配置参数 |
| setNextParams | 设置上报默认参数 | stat.setNextParams(params) | params 默认参数 |
| listen | 监听上报路径,添加默认参数,在获取默认值之前执行 | stat.listen(reg, pipe) | reg 匹配路径
pipe 改变单个数据的方法 |
| pipe | 添加数据处理钩子,在获取默认值之后,在上报之前执行 | stat.pipe(pipe) | pipe 改变整个上报数据的方法,该方法接收这次上报的所有数据 |
| on | 监听钩子 | stat.on(type, callback) | type 监听类型 callback 回调函数
type类型支持: report -> 上报完成钩子,callback(error, successData, sourceData) |
| addNode | 添加上报节点 | stat.addNode(el, { id, unView, unClick, ...params }) | el 需要绑定的dom节点
id 唯一id
unView 该节点不需要展示上报
unClick 该节点不需要点击上报
params 需要绑定的数据 |
| removeNode | 移除上报节点 | stat.removeNode(id) | id 唯一id |
| nodeReport | 节点上报 | stat.nodeReport() | - |
| pageReport | 页面上报 | stat.pageReport(params) | params 上报所需参数 |
| clickReport | 点击上报 | stat.clickReport(params) | params 上报所需参数 |
| getCurrentData | 获取当前默认数据 | stat.getCurrentData(params) | params 上报所需参数 |
## 插件类(plugins)
> 初始化(个别插件有先后顺序)
```js
import Stat from 'stat'
import { VuePlugin, WatchRoutePlugin, NativePlugin, NativePlugin_3, H5_format } from 'stat/plugins'
// import Vue from 'vue'
// import hostSdk from 'host-sdk'
// import WatchRoute from 'watch-route'
const stat = new Stat({
plugins: [
// new VuePlugin(Vue),
// new WatchRoutePlugin(WatchRoute),
// new NativePlugin(hostSdk),
// new NativePlugin_3(hostSdk), // 要求 host-sdk 3.x 版本及以上
new H5_format(),
]
})
```
> 详情
* VuePlugin: 提供 v-stat 指令
* 指令封装于 addNode 方法,参数一致
* WatchRoutePlugin: 提供 页面链(pageFrom)、父级信息(parentPage, parentParams)
* 该插件需传入 WatchRoute 构造函数,并在stat实例上挂载route实例
* NativePlugin: 提供客户端埋点所需及上报,需和 WatchRoutePlugin 一同使用以获取页面链等上报所需数据
* 该插件需传入 hostSdk 依赖
* H5_format: webapp上报格式化数据,转成上报需要的格式,
* 该插件为stat实例提供 setClientDetail 方法,该方法用于设置:渠道(channel),平台(platform,该参数已内置判断),用户id(userId)
---
## 更新
> 4.3.0
> 插件中心库与vue解耦
---
> 4.2.1
> 节点上报行为与页面上报同步
---
> 4.2.0
> 更新 host-sdk plugin
> 兼容老 host-sdk
---
> 4.1.0
> 增加 API -> on 方法,可添加钩子
---
> 4.0.2
> 增加配置 closeAutoNodeReport ,可自动上报节点展示(nodeReport)
---
> 4.0.1
> 数据的完全可控
---
> 4.0.0
> 易用性、可扩展性重构
---