# webeyssdk
**Repository Path**: baseHuang/webeyssdk
## Basic Information
- **Project Name**: webeyssdk
- **Description**: 前端监控sdk
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 36
- **Created**: 2024-10-15
- **Last Updated**: 2026-05-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# WebEyes SDK
面向 Web 应用的前端监控采集 SDK(错误、性能、行为),计划演进为企业级监控平台。
## 文档
完整产品设计见 **[doc/](./doc/)**:
| 文档 | 内容 |
|------|------|
| [doc/12-前端改版清单.md](./doc/12-前端改版清单.md) | **SDK 改版状态与 init 用法(最新)** |
| [doc/03-SDK增强设计.md](./doc/03-SDK增强设计.md) | 采样、限流、去重、脱敏 |
| [doc/10-上报逻辑设计.md](./doc/10-上报逻辑设计.md) | fetch/beacon、flush 策略 |
| [doc/11-面试难点与亮点.md](./doc/11-面试难点与亮点.md) | 面试话术 |
## 当前 SDK 能力
| 模块 | 说明 |
|------|------|
| **错误** | JS、Promise、资源;Vue `install`、React `errorBoundary` |
| **性能** | FCP、LCP、Paint、Load、资源、fetch/xhr |
| **行为** | PV、hash/popstate、点击(脱敏) |
| **治理** | 采样、限流、去重、熔断、隐私脱敏 |
| **上报** | Envelope 批量、fetch + 关页 Beacon、定时/错误 flush、离线 IndexedDB |
| **行为** | hash/popstate + **SPA pushState/replaceState** |
| **录屏** | rrweb(`modules` 含 `replay`),出错传 buffer |
| **身份** | 可配置 `identity` 字段(deviceId/uid 等),后台按字段排查 |
> 管理后台见 **`admin/`**(独立 npm 包);ClickHouse 等为规划中能力。
## 快速开始(SDK)
```bash
pnpm install
pnpm run build
```
## 本地服务层(独立目录 `server/`)
```bash
cd server
pnpm install
cp .env.example .env
pnpm run dev
```
浏览器打开 **http://127.0.0.1:9800/demo.html**(需先在根目录 `pnpm run build`)。
服务说明见 **[server/README.md](./server/README.md)**。
## 管理后台(独立目录 `admin/`)
```bash
cd admin
pnpm install
pnpm run dev
```
浏览器打开 **http://127.0.0.1:5173**(需 server 已启动)。说明见 **[admin/README.md](./admin/README.md)**。
```html
```
## Vue / React 项目接入
**只使用 `pnpm run build` 后的 `dist/` 文件**,不要引用 `src/`。
| 场景 | 使用文件 |
|------|----------|
| Vue3 / React(Vite) | `import WebEyes from 'eyesdk'` → `dist/monitor.esm.js` |
| 静态资源 | 复制 `dist/monitor.js` 到 `public/vendor/` |
| 本地联调 | `"eyesdk": "file:../webeyssdk"` 后 `import` |
详细步骤见 **[doc/13-Vue与React接入.md](./doc/13-Vue与React接入.md)**。
业务 ID(deviceId/uid 等)见 **[doc/14-业务身份标识identity.md](./doc/14-业务身份标识identity.md)**。
**Vue 3:**
```typescript
import WebEyes from 'eyesdk';
app.use(WebEyes, {
appId: 'prod_xxx',
url: 'https://api.example.com/api/v1/report',
modules: ['error', 'performance', 'behavior'],
});
```
**React:**
```tsx
import WebEyes from 'eyesdk';
await WebEyes.init({ appId: 'prod_xxx', url: '...' });
// 根组件外包一层 ErrorBoundary,在 componentDidCatch 里调用 WebEyes.errorBoundary(error, info)
```
## 上报接口(由 server/ 提供)
```
POST http://127.0.0.1:9800/api/v1/report
```
响应:`{ "code": 0, "data": { "accepted": N, "dropped": 0 } }`
## 源码结构
```text
src/
webEyeSDK.js # 入口
config.js # 配置
event.js # 事件规范
privacy/ # 脱敏
pipeline/ # 采样、限流、去重
report/ # 上报核心
offline/ # 离线队列
error/ performance/ behavior/
```
## 技术栈
- SDK 打包:Rollup + Babel
- 服务层:Express + SQLite(见 `server/`,无需单独装数据库)
- 管理后台:Vite + React + Ant Design(见 `admin/`)