Quant-交易平台官网项目

Quant-交易平台官网项目

2026年01月03日 6 次浏览 已发布
Vue.jsNode.jsMySQLNuxt.js

OpenQuant 是一个基于 **Nuxt 3** 和 **TypeScript** 构建的现代化加密货币量化交易平台官网。该项目采用**全栈架构**设计,集成了完整的用户认证、数据管理、定时任务调度等功能,前后端一体化开发。

🚀 Quant-交易平台官网项目

📋 项目概述

OpenQuant 是一个基于 Nuxt 3TypeScript 构建的现代化加密货币量化交易平台官网。该项目采用全栈架构设计,集成了完整的用户认证、数据管理、定时任务调度等功能,前后端一体化开发。

🌟 项目亮点

  • 全栈开发:Nuxt 3 + Nitro Server + Prisma ORM,前后端一体化
  • 企业级认证:JWT 双 token + 设备指纹识别 + Redis 限流
  • 数据可视化:ECharts 图表 + 实时数据看板
  • 完整部署:Docker + Docker Compose + Supervisor 进程管理

效果预览

动画效果以及完整内容请点击在线演示浏览

部分截图

首页baner
业绩展示
数据

系统介绍

🛠️ 技术架构

前端技术栈

技术 版本 用途
Nuxt.js 3.17.6 全栈框架
Vue.js 3.5.17 前端框架
TypeScript 5.6.3 类型安全
Tailwind CSS 3.4.17 样式框架
Element Plus 2.10.2 UI 组件库
ECharts 5.6.0 数据可视化
Axios 1.10.0 HTTP 客户端
VueUse 13.5.0 组合式工具集

后端技术栈

技术 用途
Nitro Server Nuxt 3 内置服务端
Prisma ORM 数据库 ORM
MySQL 8.0 关系型数据库
Redis 7.0 缓存和会话管理
JWT 身份认证
Winston 日志管理
Node-Schedule 定时任务调度
MinIO 对象存储

🎯 核心功能

1️⃣ 完善的认证授权体系

双 Token 机制

typescript 复制代码
// 短效 Access Token(30分钟)
export const generateAccessToken = (user) => {
  return pkg.sign(
    { userId, userName, email },
    secret,
    { expiresIn: '30m' }
  )
}

// 长效 Refresh Token(7天)
export const generateRefreshToken = () => {
  return randomBytes(32).toString('hex')
}

🔐 安全防护措施

措施 说明
Redis 限流 同一设备连续登录失败 5 次锁定 5 分钟
密码加密 bcrypt 加盐哈希存储
Cookie 保护 HttpOnly + SameSite
设备指纹 基于 CryptoJS SHA256 生成,设备异常自动登出
Token 持久化 存储到 MySQL,支持多设备管理

2️⃣ 数据管理模块

用户管理

  • ✅ 基于 Prisma 的 CRUD 操作
  • ✅ 分页查询、模糊搜索
  • ✅ 角色权限管理(RBAC)
  • ✅ 用户头像上传(MinIO 对象存储)

定时任务系统

typescript 复制代码
export class TaskModel {
  async createTask(task) { /* 创建任务 */ }
  async getAllTasks() { /* 获取所有任务 */ }
  async getTaskByStatus(status) { /* 按状态查询 */ }
}
  • ✅ 任务创建、编辑、删除
  • ✅ Cron 表达式调度
  • ✅ 任务执行日志记录
  • ✅ 支持手动触发、暂停、恢复

3️⃣ 数据可视化看板

首页数据展示

  • ✅ 实时涨跌幅榜
  • ✅ 数据轮播展示(ECharts 图表)
  • ✅ 交互式卡片切换动画
  • ✅ 响应式布局,适配多端

性能展示页面

组件 功能
PriceCurve 实盘收益曲线
IncomeCalendar 收益日历
StrategyTable 策略表格
RealTimePerformance 实时绩效数据

4️⃣ 请求封装与错误处理

typescript 复制代码
export async function useAxiosFetch<T>(url, options) {
  const { data, status, error, refresh } = await useAsyncData<T>(
    cacheKey,
    async () => await service.request({ url, ...options })
  )
  await handleRequestStatus({ status, error, refresh }, options)
  return { data, error, status, refresh, inRequest }
}

✨ 核心特性

特性 说明
双重视角 Axios + Nuxt useAsyncData 双重封装
自动重试 可配置重试次数
防抖通知 3 秒内不重复提示
统一处理 401/404/500 等错误统一处理
Token 刷新 自动 Token 刷新机制
超时控制 可配置请求超时时间

5️⃣ 国际化与主题系统

🌍 多语言支持

  • 基于 Nuxt i18n 模块
  • 支持中英文切换
  • 无前缀路由策略
  • 语言偏好持久化到 Cookie

🎨 主题切换

typescript 复制代码
export const useTheme = () => {
  const isDark = ref(userTheme.value === 'dark' || colorMode.value === 'dark')
  const toggleTheme = () => { isDark.value = !isDark.value }
  return { isDark, toggleTheme, setTheme }
}
  • 亮色 / 暗色主题切换
  • Element Plus 主题适配
  • 主题偏好持久化

🚢 部署方案

Docker 容器化部署

多阶段构建

dockerfile 复制代码
# 构建阶段
FROM node:20-alpine AS builder
RUN pnpm prisma generate && pnpm build

# 运行阶段
FROM node:20-alpine AS runner
# 集成 MySQL + Redis + Supervisor

📦 部署特性

特性 说明
服务编排 Web + MySQL + Redis 完整架构
进程管理 Supervisor 多进程守护
数据持久 数据卷持久化存储
健康检查 内置健康检查端点
一键启动 docker-compose up -d

💡 关键技术难点

1️⃣ SSR 与客户端状态同步

问题:Nuxt SSR 环境下,服务端渲染和客户端状态可能不一致

解决方案

  • 使用 Nuxt useState 在服务端和客户端共享状态
  • 使用 Cookie 同步认证状态
  • 设备指纹在客户端生成后持久化存储

2️⃣ 请求缓存与数据一致性

问题:Nuxt useAsyncData 缓存可能导致数据过期

解决方案

typescript 复制代码
function createCacheKey(url, options) {
  const stableParams = JSON.stringify({ url, method, params, data })
  return `api_${hashString(stableParams)}`
}
  • 基于 URL + 参数生成稳定缓存 Key
  • 支持手动 refresh() 刷新数据
  • 提供 immediate: false 延迟加载选项

3️⃣ 设备指纹跨设备识别

问题:需要识别用户更换设备时的异常登录

解决方案

  • 收集硬件特征(CPU 核心数、GPU 信息)
  • 收集环境特征(User-Agent、时区、存储能力)
  • SHA256 哈希生成唯一设备 ID
  • 设备 ID 不匹配时强制登出

⚡ 性能优化

优化项 方案
代码分割 Nuxt 自动路由级代码分割
图片优化 @nuxt/image 模块自动压缩和格式转换
缓存策略 Redis 缓存用户会话、请求限流
数据库优化 Prisma 查询优化、索引使用
日志管理 Winston 按级别/日期分割日志文件

📝 开发规范

  • 代码规范:ESLint + Prettier + Husky + Lint-staged
  • 提交规范:Commitlint 规范提交信息
  • 类型安全:全项目 TypeScript 类型定义
  • 文档完善:详细的 README、架构文档、部署指南

📊 项目成果

指标 成果
代码质量 ESLint 0 错误,TypeScript 类型覆盖率 100%
功能完整性 覆盖用户管理、认证授权、任务调度、数据可视化等核心功能
部署便捷性 一键 Docker 部署,支持多环境配置
可维护性 模块化设计,职责清晰,易于扩展

🎓 技术总结

通过该项目,我深入实践了:

  • ✅ Nuxt 3 全栈开发模式
  • ✅ 企业级认证安全体系设计
  • ✅ 大型前端项目架构设计
  • ✅ 数据可视化与交互实现
  • ✅ Docker 容器化部署
  • ✅ 微服务化模块设计

这个项目展现了我在全栈开发安全设计性能优化等方面的综合能力。

项目信息

创建时间
2026年01月03日
更新时间
2026年03月06日
浏览量
6 次