提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言

    一、项目简介与核心价值

  • 为什么需要这个健身记录网站?

  • 全栈集成的技术优势

  • 二、系统架构设计

  • 技术栈选型(Node.js + MySQL + 原生 JS)

  • 项目目录结构解析

  • 数据流转图:从前端到数据库

  • 三、开发与配置步骤

  • 环境准备:Node.js 与 MySQL 安装

  • 数据库初始化:创建健身记录表

  • 后端服务配置:环境变量与依赖安装

  • 前端 API 连接设置

  • 四、核心功能实现详解

  • 数据持久化:利用 Express 与 MySQL 存储训练数据

  • 动态 UI 交互:使用原生 JS 渲染记录列表

  • 容错处理:离线模式下的 localStorage 自动降级

  • 统计查询:按动作与时间维度的近期数据回溯

  • 五、部署指南

  • 本地开发环境启动

  • 生产环境部署(以 Render/GitHub Pages 为例)


前言

提示:这里可以添加本文要记录的大概内容:

在追求健身目标的道路上,数据反馈至关重要。本项目是一个专门为健身爱好者设计的全栈记录网站。它不仅拥有清新直观的 UI 界面,还通过 Node.js (Express)MySQL 实现了完整的数据闭环,支持实时记录训练组数、次数、重量,并能自动生成统计分析。(代码内容大部分是由vscode中的codex生成)


提示:以下是本篇文章正文内容,下面案例可供参考

✨核心功能亮点

  • 全栈数据同步:通过自定义 API 与后端 MySQL 数据库通信,确保训练数据永久保存。

  • 智能离线模式:当后端服务器不可用时,系统会自动降级切换至浏览器的 localStorage,确保记录不断档。

  • 多维数据记录:支持输入动作名称、组数、每组递增/递减次数及对应重量,完美适配各种训练法则(如金字塔法则)。

  • 近期趋势查询:支持按动作名称、时间范围(7天/30天/全部)进行精准数据回溯。

  • 响应式视觉设计:采用现代化的卡片式布局与毛玻璃背景效果,适配手机与 PC 端。


🏗️ 技术架构解析

1. 前端:轻量级驱动 (Vanilla JS + CSS3)

前端没有使用笨重的框架,而是利用原生 JavaScript 实现高效的状态管理:

  • 异步交互:使用 fetch 封装 apiCall 函数,实现无刷新的数据提交与加载。

  • 动态渲染:利用 HTML5 <template> 标签快速构建记录列表,保持代码简洁易读。

  • 环境自适应:自动识别部署环境(如 GitHub Pages),并动态调整 API 基础路径。

2. 后端:健壮的服务端逻辑 (Node.js + Express)

后端负责处理业务逻辑与数据库安全性:

  • RESTful API:提供标准化的 /api/records 接口,支持 GET、POST、DELETE 请求。

  • JSON 安全解析:针对数据库中的复杂数组字段(如每组重量列表),实现了严谨的 JSON 安全解析机制,防止数据解析异常。

  • 环境管理:使用 dotenv 管理数据库配置,提高代码的安全性和可移植性。

3. 数据库:持久化存储 (MySQL)

通过 mysql2 连接池管理数据库连接,确保高并发下的稳定性:

  • 表结构设计:包含 actionsetsreps_listweights_list 等关键字段,利用 utf8mb4 字符集支持丰富的文字输入。


🚀 核心代码展示:数据保存逻辑

app.js 中,我们通过以下逻辑实现了数据库优先、本地备份的策略:

JavaScript

async function addRecord() {
  // ...获取输入数据...
  const record = { action, sets, repsList, weightsList, createdAt: Date.now() };

  if (dbConnected) {
    const res = await apiCall("POST", "/records", record);
    if (res) record.id = res.id;
  } 
  
  // 无论数据库是否连接,都在本地保留一份副本
  records.unshift(record);
  localStorage.setItem(STORAGE_KEY, JSON.stringify(records.slice(0, 100)));
  renderAll();
}

🛠️ 快速部署指南

环境需求

  • Node.js (LTS 版本)

  • MySQL 数据库

快速启动

  1. 创建数据库

    SQL
    CREATE DATABASE fitness_record;
    
  2. 安装依赖

    Bash
    cd server && npm install
    
  3. 配置环境:在 server/.env 中填写你的数据库账号密码。

  4. 运行项目:执行 npm start 启动后端,随后打开 index.html 即可开始记录。


📈 未来规划

  • [ ] 用户认证:添加个人账户系统,支持多设备同步。

  • [ ] 可视化图表:引入 ECharts 实现肌肉力量增长曲线。

  • [ ] 移动应用化:适配 PWA 或开发移动端版本。

    最后附上网站:https://cool666-666-666.github.io/fitness-web/

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐