竞彩网全栈项目实战:克隆与重构,从零构建 Vue3 + .NET 9 现代彩票网站

原网站

QClaw克隆

增加主题切换

升级为vue

📋 项目概述

本文记录了如何使用 **Vue 3 ** 和 **.NET 9** 从零构建一个完整的彩票资讯网站,包含前端展示系统和后端 API 服务。

✨ 核心功能

| 模块 | 说明 |

|------|------|

| 🏠 首页展示 | 轮播Banner、开奖公告、赛事投注表 |

| 🎨 主题切换 | 深色/浅色模式,localStorage记忆 |

| 👤 用户系统 | 注册、登录、JWT认证 |

| 📱 响应式 | 完美适配 PC 端 |


🖥️ 技术架构

```

┌─────────────────────────────────────────────────────┐

│ 前端 (Vue 3) │

├─────────────────────────────────────────────────────┤

│ • Vue 3.4 + Composition API │

│ • Pinia 状态管理 │

│ • Vite 5 构建工具 │

│ • CSS Variables 主题系统 │

└─────────────────────────────────────────────────────┘

↓ HTTP API

┌─────────────────────────────────────────────────────┐

│ 后端 (.NET 9) │

├─────────────────────────────────────────────────────┤

│ • ASP.NET Core Web API │

│ • Entity Framework Core + Pomelo MySQL │

│ • JWT Bearer 认证 │

│ • BCrypt 密码加密 │

└─────────────────────────────────────────────────────┘

```


🎨 前端实现

1. 项目结构

```

sporttery-vue3/

├── src/

│ ├── components/ # 14个Vue组件

│ │ ├── TopBar.vue # 顶部导航条

│ │ ├── SiteHeader.vue # Logo+搜索+主题切换

│ │ ├── MainNav.vue # 多级导航菜单

│ │ ├── Banner.vue # 轮播Banner

│ │ ├── LotteryCard.vue # 开奖公告

│ │ ├── MatchTable.vue # 赛事投注表

│ │ ├── NewsSection.vue # 新闻资讯

│ │ ├── AuthModal.vue # 登录/注册弹窗 ⭐

│ │ └── ...

│ ├── stores/ # Pinia状态管理

│ │ ├── theme.js # 主题状态

│ │ └── auth.js # 用户认证 ⭐

│ ├── api/ # API请求封装 ⭐

│ └── composables/ # 可复用逻辑

```

2. 主题切换系统

使用 CSS 变量实现一键主题切换:

```css

/* 浅色主题 */

:root {

--color-bg-primary: #FFFFFF;

--color-text-primary: #333333;

--color-border: #DDDDDD;

}

/* 深色主题 */

data-theme="dark" {

--color-bg-primary: #1A1A1A;

--color-text-primary: #E8E8E8;

--color-border: #3D3D3D;

}

```

3. 用户认证模块

使用 Pinia 管理登录状态:

```javascript

// stores/auth.js

export const useAuthStore = defineStore('auth', () => {

const token = ref(localStorage.getItem('token') || '')

const user = ref(null)

async function login(account, password) {

const res = await api.login({ account, password })

token.value = res.data.token

user.value = res.data.user

}

})

```


⚙️ 后端实现

1. 项目结构

```

sporttery-api/

├── src/

│ ├── Controllers/

│ │ ├── AuthController.cs # 认证接口 ⭐

│ │ └── HealthController.cs # 健康检查

│ ├── Services/

│ │ ├── UserService.cs # 用户业务逻辑

│ │ └── JwtService.cs # JWT生成 ⭐

│ ├── Models/

│ │ └── User.cs # 用户实体

│ ├── Data/

│ │ └── AppDbContext.cs # EF Core上下文

│ └── DTOs/

│ └── DTOs.cs # 数据传输对象

└── appsettings.json # 配置文件

```

2. 核心接口

| 接口 | 方法 | 说明 |

|------|------|------|

| `/api/auth/register` | POST | 用户注册 |

| `/api/auth/login` | POST | 用户登录 |

| `/api/auth/me` | GET | 获取当前用户信息 |

3. JWT 认证

```csharp

// Services/JwtService.cs

public string GenerateToken(int userId, string username)

{

var claims = new\[\]

{

new Claim(ClaimTypes.NameIdentifier, userId.ToString()),

new Claim(ClaimTypes.Name, username)

};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtKey));

var token = new JwtSecurityToken(..., claims, ..., signingCredentials);

return new JwtSecurityTokenHandler().WriteToken(token);

}

```

4. 数据库设计

```sql

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL UNIQUE,

email VARCHAR(100) NOT NULL UNIQUE,

password_hash VARCHAR(255) NOT NULL,

phone VARCHAR(20),

created_at DATETIME DEFAULT CURRENT_TIMESTAMP,

updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP,

is_active TINYINT(1) DEFAULT 1

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

```


🚀 项目演示

前端地址

```

http://localhost:5174/

```

后端 API

```

http://localhost:5001/api/auth/register

http://localhost:5001/api/auth/login

```

核心界面

  1. **首页** - 轮播Banner + 开奖公告 + 赛事表

  2. **主题切换** - 点击右上角月亮/太阳图标

  3. **用户中心** - 点击登录/注册,体验完整流程


📦 技术要点总结

Vue 3 亮点

  • ✅ `<script setup>` 语法糖,代码更简洁

  • ✅ Pinia 状态管理,代码更解耦

  • ✅ Teleport 组件,实现弹窗更优雅

  • ✅ CSS Variables,主题切换更丝滑

.NET 9 亮点

  • ✅ 最小 API,配置更简洁

  • ✅ EF Core 9,性能更强

  • ✅ JWT Bearer,认证更安全

  • ✅ 依赖注入,代码更可维护


📝 源代码

| 项目 | 路径 |

|------|------|

| 前端 Vue3 | `/Users/dev/.qclaw/workspace/sporttery-vue3/` |

| 后端 .NET | `/Users/dev/.qclaw/workspace/sporttery-api/` |

🙏 致谢

感谢 QClaw AI 助手提供的开发支持!

*本文由 AI 辅助编写,完整记录了项目开发全过程*

相关推荐
cxr82810 小时前
高分子复合材料 AI 逆向设计合——工业交付、系统自重构与范式演进
人工智能·重构·材料逆向设计合成
Black蜡笔小新10 小时前
企业私有化AI训练推理一体工作站DLTM重构企业AI模型训练的全流程模式
人工智能·机器学习·重构
无风听海16 小时前
ASP.NET Core .NET 10 错误响应体系全景:从 BadRequest 到编译器基础设施
后端·asp.net·.net
喵了几个咪17 小时前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
vue.js·人工智能·react.js·重构·golang·ai编程
Zldaisy3d17 小时前
LPBF 3D打印迈入精准可控的技术深水区:扫描策略智能化与连续化正重构竞争壁垒
3d·重构
qq_3464411618 小时前
2026 年 6月避坑选百擎科技:最新全域GEO优化重构数字营销
科技·重构
码农小白AI19 小时前
实验室数智化转型的真正起点:AI 报告审核如何成为第一道“质量闸门”,IACheck重构审核逻辑
人工智能·重构
EasyDSS19 小时前
安全可控、全场景适配:私有化音视频系统/视频直播点播EasyDSS一站式云平台重构视频协作新模式
安全·重构·音视频
码农小白AI21 小时前
从分段审核到一体化闭环:AI 报告审核如何用 IACheck 重构仪器校准与期间核查流程
人工智能·重构
AI行业学习2 天前
.NET Framework 3.5 SP1 完整离线包【2026.5.31】
.net