baoxiang/frontend
2025-12-18 15:03:25 +08:00
..
dist 主播后台添加模板页面 2025-12-18 15:03:25 +08:00
src 主播后台添加模板页面 2025-12-18 15:03:25 +08:00
.env 第三版 2025-12-18 13:28:29 +08:00
index.html 第一次提交哦啊 2025-12-16 18:06:50 +08:00
package-lock.json 第一次提交哦啊 2025-12-16 18:06:50 +08:00
package.json 第一次提交哦啊 2025-12-16 18:06:50 +08:00
README.md 第一次提交哦啊 2025-12-16 18:06:50 +08:00
tsconfig.json 第三版 2025-12-18 13:28:29 +08:00
tsconfig.node.json 第一次提交哦啊 2025-12-16 18:06:50 +08:00
vite.config.ts 第三版 2025-12-18 13:28:29 +08:00
开发总结.md 第一次提交哦啊 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         # 全局样式

开发

安装依赖

npm install

启动开发服务器

npm run dev

服务将在 http://localhost:3000 启动

构建生产版本

npm run build

预览生产版本

npm run preview

API配置

前端通过环境变量配置API地址

// 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实现以下实时功能

  • 奖池金额实时更新
  • 宝箱状态变更广播
  • 获胜通知推送

连接逻辑:

// 根据用户角色连接不同频道
const endpoint = userType === 'streamer' ? 'ws/streamer' : 'ws/user';

样式系统

使用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