一个基于 Vue 3 + TypeScript + Vite 的现代化宝宝护理记录系统,帮助家长轻松记录和管理宝宝的日常护理数据。
src/
├── components/ # 通用组件
│ └── DefaultAvatar.vue # 默认头像组件
├── layouts/ # 布局组件
│ └── MainLayout.vue # 主布局(侧边栏+内容区)
├── router/ # 路由配置
│ └── index.ts # 路由定义和守卫
├── services/ # API 服务
│ └── api.ts # API 客户端和类型定义
├── stores/ # 状态管理
│ └── user.ts # 用户状态管理
├── views/ # 页面组件
│ ├── Dashboard.vue # 首页控制中心
│ ├── Login.vue # 登录/注册页
│ ├── Timeline.vue # 时光轴页
│ ├── Stats.vue # 数据统计页
│ ├── Gallery.vue # 美好时刻页
│ └── Settings.vue # 家庭与设置页
├── widgets/ # 模态框组件
│ ├── FeedingModal.vue # 喂奶记录模态框
│ ├── DiaperModal.vue # 尿布记录模态框
│ ├── SleepModal.vue # 睡眠记录模态框
│ └── CryModal.vue # 哭闹记录模态框
├── App.vue # 根组件
├── main.ts # 应用入口
└── styles.css # 全局样式
npm install
创建 .env.development 文件:
# 开发环境配置
VITE_API_BASE_URL=http://localhost:8080
VITE_PUBLIC_MEDIA_BASE=http://localhost:9000
创建 .env.production 文件:
# 生产环境配置
VITE_API_BASE_URL=http://192.168.5.5:30928
VITE_PUBLIC_MEDIA_BASE=https://www.binbinzhang.cn/audio/babycare-media
VITE_API_BASE_URL:后端API服务器地址VITE_PUBLIC_MEDIA_BASE:媒体文件访问基础地址npm run dev
应用将在 http://localhost:5173 启动。
# 开发环境构建
npm run build:dev
# 生产环境构建
npm run build:prod
构建文件将输出到 dist/ 目录。
# 预览开发构建
npm run preview
# 预览生产构建
npm run preview:prod
项目支持多环境构建,通过 --mode 参数指定环境:
# 指定环境构建
npm run build -- --mode production
npm run build -- --mode development
项目使用统一的 API 配置管理:
// src/services/api.ts
export const API_CONFIG = {
BASE_URL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:8080',
MEDIA_BASE: import.meta.env.VITE_PUBLIC_MEDIA_BASE || '/media'
};
应用实现了完整的路由守卫机制:
使用 Pinia 进行全局状态管理:
AI助手使用Server-Sent Events (SSE)实现流式对话:
// AI对话流式响应
async function startAIStreaming(input: string) {
const response = await fetch('/api/ai/chat/stream', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ userInput: input })
});
// 处理SSE流式数据
const reader = response.body?.getReader();
// ... 流式处理逻辑
}
登录注册页面集成图形验证码防机器人:
/* 移动端优先 */
sm: 640px /* 小屏幕 */
md: 768px /* 中等屏幕 */
lg: 1024px /* 大屏幕 */
xl: 1280px /* 超大屏幕 */
:root {
--primary: #FFB6C1; /* 主色调 */
--secondary: #FFC0CB; /* 辅助色 */
--accent: #FFD700; /* 强调色 */
--text: #333333; /* 文字色 */
--bg: #F8F9FA; /* 背景色 */
}
# 生产构建
npm run build
# 构建文件输出到 dist/ 目录
# 包含:
# - index.html
# - assets/ (CSS, JS 文件)
# - 静态资源
dist/ 目录部署到 Web 服务器项目包含 Dockerfile 支持容器化部署:
# 多阶段构建
FROM node:18-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build:prod
FROM nginx:alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
server {
listen 80;
server_name your-domain.com;
root /usr/share/nginx/html;
index index.html;
# SPA 路由支持
location / {
try_files $uri $uri/ /index.html;
}
# API 代理
location /api/ {
proxy_pass http://192.168.5.5:30928/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# CORS 支持
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization";
# 处理预检请求
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization";
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain; charset=utf-8';
add_header Content-Length 0;
return 204;
}
}
# 媒体文件代理
location /media/ {
proxy_pass https://www.binbinzhang.cn/audio/babycare-media/;
proxy_set_header Host www.binbinzhang.cn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
模块导入错误
# 清除缓存并重新安装
rm -rf node_modules/.vite
npm install
API 请求失败
构建失败
# 检查 Node.js 版本
node --version
# 重新安装依赖
rm -rf node_modules package-lock.json
npm install
环境变量问题
# 检查环境变量文件
ls -la .env*
# 确保生产环境配置正确
cat .env.production
AI助手连接失败
图形验证码问题
# 启用详细日志
npm run dev -- --debug
# 检查构建详情
npm run build -- --debug
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请通过以下方式联系:
宝宝护理日记 - 让育儿记录更简单,让成长时光更珍贵 ❤️