健身信息记录网站
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
-
前言
一、项目简介与核心价值
-
为什么需要这个健身记录网站?
-
全栈集成的技术优势
-
二、系统架构设计
-
技术栈选型(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 连接池管理数据库连接,确保高并发下的稳定性:
-
表结构设计:包含
action、sets、reps_list、weights_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 数据库
快速启动
-
创建数据库:
SQLCREATE DATABASE fitness_record; -
安装依赖:
Bashcd server && npm install -
配置环境:在
server/.env中填写你的数据库账号密码。 -
运行项目:执行
npm start启动后端,随后打开index.html即可开始记录。
📈 未来规划
-
[ ] 用户认证:添加个人账户系统,支持多设备同步。
-
[ ] 可视化图表:引入 ECharts 实现肌肉力量增长曲线。
-
[ ] 移动应用化:适配 PWA 或开发移动端版本。
最后附上网站:https://cool666-666-666.github.io/fitness-web/
更多推荐


所有评论(0)