UNPKG

th-gather

Version:
158 lines (126 loc) 7.39 kB
# th-gather ![NPM](https://img.shields.io/npm/v/th-gather) ![License](https://img.shields.io/npm/l/th-gather) `th-gather`是简单易用且可扩展的前端全埋点脚本。可以统计上报接口请求,页面停留时间,用户设备等信息。为业务需求迭代提供数据参考。 # 一、安装和使用 ## 安装 ```npm npm i th-gather ``` 或者 ```yarn yarn add th-gather ``` ## 使用 ```ts import init from 'th-gather'; init({ projectKey: 'pc_project', url: '/log/record', isLog: true, beforeInit() { console.log('init start...'); }, mergeMsg() { // request ... return new Promise((resolve) => { setTimeout(() => { resolve({ name: '测试用户', age: 12, id: 'user_id' }); }, 1000); }); }, beforeSendMsg(data) { const newData = { ...data, newKey: 'add new value' }; return newData; }, }); ``` # 二、初始化选项 | 参数 | 类型 | 描述 | 默认值 | | :-------------: | :-------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | :---------: | | projectKey | string | 自定义的项目标识,方便区分多个项目 | - | | url | string | 上报的地址 | - | | gatherKeys | BaseMsg[] | 配置需要收集的基本信息 | defaultKeys | | frequency | number | 上报频率,默认为每满 10 条上报一次 | 10 | | isDiscard | boolean | 是否在窗口关闭时,上报剩余的数据 | true | | isRoutes | boolean | 是否收集路由跳转信息 | true | | isPerformance | boolean | 是否监听浏览器性能信息 | true | | isPromiseError | boolean | 是否监听 promise 错误(没有被 reject 处理的 promise 错误) | true | | isResourceError | boolean | 是否监听页面资源错误 | true | | isRequest | boolean | 是否监听接口请求信息 | true | | isLog | boolean | 是否需要打印日志 | - | | beforeInit | ()=>void | 脚本初始化之前运行 | - | | mergeMsg | () => (Record<string,any> or Promise<Record<string,any>>) | 返回的值会被合并到每一条上报数据中, 可以用于从接口中读取用户信息, 此函数优先级在内置埋点事件开始监听之前 | - | | beforeSendMsg | (data: ExtraMsg & BaseMsg) => ExtraMsg & BaseMsg | 上报数据之前,可以在此对数据进行加工 | - | | headers | Object | 上报请求头, 因为页面卸载上报的时候无法设置请求头,可能会导致部分数据丢失 | - | # 三、上报数据格式 上报的数据由`基本数据 + 对应类型数据`组成(**使用 gatherKeys 编辑的时候,只能编辑基本数据字段**),收集的示例数据如下所示: ![image](https://user-images.githubusercontent.com/48620706/181671691-2c560695-e215-4b26-b892-811d969c6063.png) # 四、收集字段含义 ## 4.1 基本数据 `默认包含以下选项['key','o','ua','ul','ct','vp','sr','logId','gmt','dpr','rf']` | 字段 | 描述 | | :---: | :--------------: | | key | 项目 key 值 | | o | 当前页面路径 | | ua | ua | | ul | 浏览器语言 | | ct | 网络类型 | | vp | 浏览器宽高 | | sr | 屏幕宽高 | | logId | 每条记录的 id 值 | | gmt | 数据生成时间 | | dpr | devicePixelRatio | | rf | referer | ## 4.2 浏览器性能数据 | 字段 | 描述 | | :--: | :----------------------: | | type | 标识为 performance | | dns | dns 查询时间 | | tcp | tcp 连接耗时 | | ttfb | 读取页面第一个字节的时间 | | bt | 白屏时间 | | dt | 解析 dom 树耗时 | | drt | dom 完成时间 | | rt | request 请求耗时 | | lt | 页面完成时间 | | nv | 当前页面如何导航到此处 | ## 4.3 路由信息 | 字段 | 描述 | | :------: | :------------: | | type | 标识为 pv | | pathname | 当前路由地址 | | from | 上一个跳转地址 | | title | 网页标题 | | stay | 停留时间 | ## 4.4 接口信息 `tips: 收集所有由XMLHttpRequest发起的请求` | 字段 | 描述 | | :--: | :--------------: | | type | 标识为 interface | | url | 接口请求地址 | | tc | 接口耗时 | | cd | 状态码 | | rq | 发送请求时间 | | rp | 接受响应时间 | ## 4.5 js 错误信息 | 字段 | 描述 | | :--: | :----------: | | type | 标识为 error | | st | 错误类型 js | | file | 文件名 | | line | error.lineno | | col | error.coln | | msg | 错误信息 | ## 4.6 资源异常信息 | 字段 | 描述 | | :--: | :---------------: | | type | 标识为 error | | st | 错误类型 resource | | file | 资源链接 | | msg | 错误信息 | ## 4.7 promise 错误信息 | 字段 | 描述 | | :--: | :--------------: | | type | 标识为 error | | st | 错误类型 promise | | file | ' ' | | msg | 错误信息 |