baoxiang/frontend/README.md

193 lines
4.6 KiB
Markdown
Raw Normal View History

2025-12-16 18:06:50 +08:00
# 宝箱竞猜系统 - 前端
基于 React + TypeScript + Vite 构建的现代化前端界面。
## 功能特性
- 🎨 现代化UI设计支持深色主题
- 📱 完全响应式布局,支持移动端
- 🔐 完整的用户认证和权限管理
- 🎮 主播控制台 - 创建和管理宝箱
- 💰 用户中心 - 查看余额和交易记录
- 🔴 实时WebSocket更新奖池信息
- 🏆 富豪榜展示
## 技术栈
- **框架**: React 18 + TypeScript
- **构建工具**: Vite
- **路由**: React Router v6
- **状态管理**: React Context
- **HTTP客户端**: Axios
- **WebSocket**: Socket.io Client
- **样式**: CSS3 (使用CSS变量和现代特性)
## 项目结构
```
src/
├── components/ # 公共组件
│ ├── Header.tsx # 页面头部导航
│ ├── Card.tsx # 卡片组件
│ ├── ChestCard.tsx # 宝箱卡片
│ ├── Loading.tsx # 加载组件
│ └── ProtectedRoute.tsx # 路由权限控制
├── pages/ # 页面组件
│ ├── HomePage.tsx # 首页 - 宝箱列表
│ ├── ChestPage.tsx # 宝箱详情页
│ ├── LoginPage.tsx # 登录页
│ ├── RegisterPage.tsx # 注册页
│ ├── StreamerConsole.tsx # 主播控制台
│ ├── UserProfile.tsx # 用户中心
│ └── AdminPanel.tsx # 管理后台
├── contexts/ # React Context
│ └── AuthContext.tsx # 认证上下文
├── services/ # 服务层
│ ├── api.ts # API接口封装
│ └── websocket.ts # WebSocket服务
├── types/ # TypeScript类型定义
│ └── index.ts
├── App.tsx # 主应用组件
├── main.tsx # 应用入口
└── index.css # 全局样式
```
## 开发
### 安装依赖
```bash
npm install
```
### 启动开发服务器
```bash
npm run dev
```
服务将在 http://localhost:3000 启动
### 构建生产版本
```bash
npm run build
```
### 预览生产版本
```bash
npm run preview
```
## API配置
前端通过环境变量配置API地址
```typescript
// src/services/api.ts
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '';
```
如果需要修改API地址请在 `.env` 文件中修改 `VITE_API_BASE_URL` 的值。
## 功能说明
### 用户角色
1. **普通用户 (user)**
- 浏览活跃宝箱
- 参与下注
- 查看交易记录
- 领取每日低保
2. **主播 (streamer)**
- 拥有普通用户所有权限
- 创建和管理宝箱
- 封盘和结算操作
- 获得5%分润
3. **管理员 (admin)**
- 拥有所有权限
- 管理用户
- 调整用户余额
### 页面说明
- **首页** (`/`) - 展示所有活跃宝箱,支持实时更新
- **宝箱详情** (`/chests/:id`) - 显示详细下注界面和赔率计算
- **主播控制台** (`/streamer`) - 创建、封盘、结算宝箱
- **用户中心** (`/profile`) - 查看个人信息、交易记录、富豪榜
- **管理后台** (`/admin`) - 管理用户和调整余额
### WebSocket实时更新
系统通过WebSocket实现以下实时功能
- 奖池金额实时更新
- 宝箱状态变更广播
- 获胜通知推送
连接逻辑:
```typescript
// 根据用户角色连接不同频道
const endpoint = userType === 'streamer' ? 'ws/streamer' : 'ws/user';
```
## 样式系统
使用CSS变量实现主题系统
```css
:root {
--primary-color: #6366f1;
--bg-color: #0f172a;
--text-primary: #f1f5f9;
/* ...更多变量 */
}
```
响应式断点:
- 桌面端:> 768px
- 移动端:≤ 768px
## 开发注意事项
1. **认证状态管理**
- 使用AuthContext统一管理用户认证状态
- 自动处理token刷新和失效
2. **路由权限**
- 使用ProtectedRoute组件保护需要登录的页面
- 根据用户角色控制页面访问
3. **错误处理**
- 所有API请求都有错误处理机制
- 401错误自动跳转到登录页
4. **性能优化**
- 使用React.memo优化组件渲染
- 合理使用useEffect依赖数组
## 常见问题
### Q: 前端无法连接后端API
A: 检查后端服务是否在正确的地址启动并确保CORS配置正确。默认情况下后端服务在 http://localhost:8000 启动。
### Q: WebSocket连接失败
A: 检查后端WebSocket服务是否启动以及token是否有效。
### Q: 样式显示异常
A: 确保CSS文件正确加载检查是否有CSS冲突。
## 贡献指南
1. 遵循现有的代码风格和项目结构
2. 使用TypeScript进行类型检查
3. 确保响应式设计兼容性
4. 添加适当的错误处理
5. 保持组件的单一职责原则
## 许可证
MIT License