bw-frontend-sdk 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -16
- package/package.json +5 -10
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
npm install bw-frontend-sdk
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
**注意**: 本SDK
|
|
23
|
+
**注意**: 本SDK优先使用 `sendBeacon` API 发送HTTP请求(性能更好、异步非阻塞),`axios` 仅作为候补方案(当 `sendBeacon` 不可用、失败或数据过大时使用)。SDK 会自动安装 axios 依赖作为候补。
|
|
24
24
|
|
|
25
25
|
## 快速开始
|
|
26
26
|
|
|
@@ -505,38 +505,47 @@ npm run build
|
|
|
505
505
|
npm run dev
|
|
506
506
|
```
|
|
507
507
|
|
|
508
|
-
##
|
|
508
|
+
## 数据上报机制
|
|
509
509
|
|
|
510
|
-
SDK
|
|
510
|
+
SDK 采用智能上报策略,优先使用现代浏览器 API,自动降级保证兼容性:
|
|
511
511
|
|
|
512
|
-
|
|
513
|
-
2. **性能监控**: 自动监控所有axios请求的性能
|
|
514
|
-
3. **错误处理**: 统一的axios错误处理机制
|
|
512
|
+
### 上报优先级
|
|
515
513
|
|
|
516
|
-
|
|
514
|
+
1. **sendBeacon(主要方式)**
|
|
515
|
+
- ✅ 异步非阻塞,不影响页面性能
|
|
516
|
+
- ✅ 页面卸载时仍能可靠发送(重要数据不丢失)
|
|
517
|
+
- ✅ 性能更好,不占用主线程
|
|
518
|
+
- ✅ 自动处理,无需额外配置
|
|
519
|
+
- ⚠️ 数据大小限制约 60KB(超过时自动使用 axios)
|
|
520
|
+
|
|
521
|
+
2. **axios(候补方案)**
|
|
522
|
+
- 🔄 当 `sendBeacon` 不可用、失败或数据过大时自动使用
|
|
523
|
+
- 🔄 支持更大的数据量
|
|
524
|
+
- 🔄 兼容所有浏览器环境
|
|
525
|
+
|
|
526
|
+
### 自动降级策略
|
|
517
527
|
|
|
518
528
|
```javascript
|
|
519
|
-
// SDK
|
|
529
|
+
// SDK 会自动选择最佳上报方式
|
|
520
530
|
const sdk = new FrontendSDK({
|
|
521
531
|
reportUrl: 'https://your-api.com/report'
|
|
522
532
|
})
|
|
523
533
|
|
|
524
|
-
//
|
|
534
|
+
// 优先尝试 sendBeacon,失败或不可用时自动使用 axios
|
|
525
535
|
sdk.reportEvent('user_action', { action: 'click' })
|
|
526
536
|
```
|
|
527
537
|
|
|
528
|
-
### 使用自定义axios
|
|
538
|
+
### 使用自定义 axios 配置(仅候补场景)
|
|
539
|
+
|
|
540
|
+
当 SDK 使用 axios 作为候补方案时,可以使用自定义配置:
|
|
529
541
|
|
|
530
542
|
```javascript
|
|
531
|
-
//
|
|
532
|
-
import axiosInstance from '
|
|
543
|
+
// 导入 axios 实例(仅在 axios 作为候补时使用)
|
|
544
|
+
import axiosInstance from 'bw-frontend-sdk/axios-config'
|
|
533
545
|
|
|
534
|
-
//
|
|
546
|
+
// 自定义配置(仅在 axios 作为候补时生效)
|
|
535
547
|
axiosInstance.defaults.baseURL = 'https://api.example.com'
|
|
536
548
|
axiosInstance.defaults.timeout = 15000
|
|
537
|
-
|
|
538
|
-
// 发送请求
|
|
539
|
-
const response = await axiosInstance.post('/api/data', { key: 'value' })
|
|
540
549
|
```
|
|
541
550
|
|
|
542
551
|
## 相关文档
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bw-frontend-sdk",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "前端异常拦截和业务埋点 SDK
|
|
3
|
+
"version": "1.1.8",
|
|
4
|
+
"description": "前端异常拦截和业务埋点 SDK",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=12.0.0"
|
|
7
7
|
},
|
|
@@ -39,15 +39,10 @@
|
|
|
39
39
|
"rollup-plugin-terser": "^7.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"axios": "
|
|
43
|
-
"ua-parser-js": "
|
|
42
|
+
"axios": "^1.11.0",
|
|
43
|
+
"ua-parser-js": "^2.0.6"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
"peerDependenciesMeta": {
|
|
49
|
-
"vue": {
|
|
50
|
-
"optional": false
|
|
51
|
-
}
|
|
46
|
+
"vue": "^3.0.0"
|
|
52
47
|
}
|
|
53
48
|
}
|