考研伴侣app开发日志day02 - Vue Router多页面重构与性能优化
发表于|更新于|VibeCoding
前言
今天是考研伴侣App开发的第二天,主要任务是将之前单页面的应用重构为基于Vue Router的多页面SPA应用,实现模块化管理和更好的用户体验。
开发目标
- 模块化拆分:将臃肿的单页面拆分为8个独立功能页面
- 路由管理:引入Vue Router实现SPA无刷新切换
- UI优化:保持玻璃拟态设计风格,添加夜间模式
- 性能优化:确保首屏加载和页面切换流畅
- 代码规范:遵循Vue 3 Composition API最佳实践
一、项目结构重构
1.1 原有结构分析
原有应用将所有功能集中在单一页面,导致:
- 代码难以维护
- 首屏加载缓慢
- 功能耦合度高
1.2 新目录结构
1 | love-study-app/ |
二、核心技术实现
2.1 Vue Router配置
1 | // src/router/index.js |
技术要点:
- 使用
createWebHistory()实现HTML5 History模式 - 采用动态导入
component: () => import(...)实现路由懒加载 - 每个路由配置
meta元数据用于页面标题管理
2.2 入口文件配置
1 | // src/main.js |
2.3 根组件简化
1 | <!-- src/App.vue --> |
App组件现在只负责渲染Layout组件,职责单一。
三、Layout布局组件详解
3.1 组件结构
Layout组件是整个应用的骨架,包含:
- 顶部导航栏(Logo + 夜间模式切换)
- 积分显示区域
- 主导航菜单(8个功能入口)
- 页面内容区域(
<router-view>) - 底部快捷导航(移动端适配)
3.2 完整代码
1 | <!-- src/components/Layout.vue --> |
3.3 技术亮点
- 响应式导航:根据当前路由自动高亮激活的菜单项
- 夜间模式:支持localStorage持久化存储
- 全局状态管理:通过Vue provide/inject实现跨组件通信
- 移动端适配:底部快捷导航栏仅在移动端显示
- 积分系统:集中管理积分状态,所有子组件可响应更新
四、八大功能页面概览
4.1 Home首页
功能:
- 考研倒计时(2026-12-26)
- 每日暖心鼓励语
- 任务统计概览
- 快捷操作工具栏
核心代码片段:
1 | const targetDate = new Date('2026-12-26') |
4.2 Tasks任务管理
功能:
- 添加/删除/完成任务
- 任务分类(学习、英语、政治、专业课等)
- 优先级设置(紧急、普通、低优先)
- 筛选功能(全部/待完成/已完成)
- 完成率统计
技术要点:
- 使用
computed实现响应式筛选 - localStorage持久化存储
- 完成任务自动+10积分
4.3 Focus专注计时
功能:
- 25分钟番茄钟计时器
- 环形进度条可视化
- 白噪音环境音(雨声、森林、海浪等)
- 音量控制
- 专注记录统计
- 完成奖励5积分
核心逻辑:
1 | const completePomodoro = () => { |
4.4 Checkin习惯打卡
功能:
- 自定义习惯列表
- 每日一键打卡
- 连续打卡天数统计
- 习惯完成率图表
4.5 Stats数据统计
功能:
- 学习时长统计图表
- 任务完成趋势
- 专注时段分析
- 积分获取统计
4.6 Rewards心愿单兑换
功能:
- 心愿单管理(愿望+所需积分)
- 积分兑换功能
- 已实现愿望展示
4.7 Journal学习心得
功能:
- 每日学习记录
- 日期筛选
- 历史心得回顾
4.8 Achievements成就徽章
功能:
- 10个成就徽章系统
- 解锁条件展示
- 进度追踪
五、样式系统
5.1 Tailwind CSS配置
1 | // tailwind.config.js |
5.2 全局样式
1 | /* src/style.css */ |
六、问题排查与解决
6.1 Tasks.vue模板错误
问题:
1 | <!-- 错误写法 --> |
原因:在Vue 3模板中,ref会自动解包,不需要.value
解决:
1 | <!-- 正确写法 --> |
6.2 夜间模式不生效
原因:缺少tailwind.config.js配置
解决:创建配置文件并启用darkMode: 'class'
6.3 页面空白/加载缓慢
分析:
- Vite开发模式需要实时编译
- 粒子效果增加DOM操作开销
- 多重动画增加渲染压力
解决:
- 移除粒子效果
- 简化背景动画
- 建议使用生产构建:
npm run build && npx vite preview
6.4 端口占用
解决:
1 | # 终止占用端口的进程 |
七、性能优化策略
7.1 路由懒加载
每个页面组件使用动态导入,实现按需加载:
1 | component: () => import('../views/Home.vue') |
7.2 CSS优化
- 使用Tailwind CSS原子化CSS,减少CSS体积
- 使用
will-change提示浏览器优化 - 使用
transform: translateZ(0)开启GPU加速
7.3 首屏优化
- 移除粒子效果(减少20+ DOM操作)
- 简化背景动画
- 建议生产环境预编译
八、Git版本管理
8.1 提交记录
1 | 135e849 feat: 添加Vue Router路由和8个功能页面 |
8.2 仓库地址
1 | https://github.com/dafenqirunrunrun/love-study-app.git |
九、开发经验总结
9.1 Vue 3 Composition API最佳实践
使用
<script setup>语法糖- 代码更简洁
- 更好的类型推断
- 更快的编译速度
合理使用ref和reactive
- 原始类型用
ref - 对象类型可以用
reactive - 模板中ref自动解包,无需
.value
- 原始类型用
provide/inject用于跨组件通信
- 避免props逐层传递
- 适合”插件”式功能(如积分系统)
9.2 Vue Router最佳实践
路由懒加载
1
component: () => import('./views/Page.vue')
路由元信息meta
- 存储页面标题、权限等信息
- 路由守卫中访问
to.meta
动态路由参数
- 使用
:id定义参数路由 - 组件中通过
useRoute()获取参数
- 使用
9.3 UI/UX设计心得
玻璃拟态风格
- 半透明背景+模糊效果
- 柔和的阴影和边框
- 营造现代感
响应式设计
- 移动端底部导航
- 弹性布局flex-wrap
- 媒体查询适配
交互反馈
- hover状态变化
- active缩放效果
- loading状态提示
十、后续优化方向
10.1 短期优化
- 添加页面切换过渡动画
- 优化加载状态提示
- 添加骨架屏loading效果
10.2 中期规划
- 后端API对接(Node.js/Express)
- 数据库存储(MongoDB/SQLite)
- 用户认证系统
- 数据同步功能
10.3 长期愿景
- 移动端App(Capacitor/Tauri)
- 小程序版本
- AI智能推荐学习计划
- 社交功能(情侣互相关注、学习PK)
结语
今天的开发工作圆满完成,考研伴侣App已经具备了完整的SPA架构和八大核心功能。从最初的单页面臃肿应用,到现在的模块化、可维护的现代Web应用,代码质量和用户体验都得到了显著提升。
下一步将继续完善功能细节,优化用户体验,并逐步引入后端服务,实现数据的持久化存储和跨设备同步。
开发进度:30%(共规划100%)
文档创建时间:2026-02-08
作者:达芬奇
版本:v2.0
文章作者: 达芬奇
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 达芬奇的博客!
相关推荐

2026-02-07
OpenCode 实录:从零构建考研伴侣 Vue3 应用
OpenCode 实录:从零构建考研伴侣 Vue3 应用前言:从”氛围编程”到真实产品在 2026 年,OpenCode 代表的不仅仅是一个 AI Agent,它是一种全新的编程范式——Vibecoding(氛围编程)。开发者不再需要记忆每一个 API 细节,而是通过自然语言描述需求,AI Agent 会自动完成代码编写、配置、调试甚至部署。 这篇笔记完整记录了我利用 OpenCode 从零构建一个”考研伴侣”学习管理应用的全过程。这个应用包含了考研倒计时、番茄钟专注计时器、任务管理系统、恋爱积分奖励系统等实用功能。 📦 实验一:项目初始化与环境搭建 (Experiment A: Project Setup)核心工具:OpenCode + Vite + Vue3 + TailwindCSS 今日目标:搭建 Vue3 + TailwindCSS 项目基础框架,配置动画效果。 1. 核心 Prompt “帮我创建一个 Vue3 项目,使用 TailwindCSS 搭建一个考研倒计时应用。目标日期是 2026-12-26。需要包含:考研倒计时、每日暖心鼓励语、番茄钟专注计时器、任务...

2026-02-10
学习伴侣App v2.0升级开发记录 - 品牌重命名与功能扩展
学习伴侣App v2.0升级开发记录📋 更新概述本次更新于 2026-02-10 完成,将”考研伴侣”正式升级为通用的”学习伴侣”应用,同时大幅扩展了成就系统和积分奖励系统。 GitHub 仓库:https://github.com/dafenqirunrunrun/love-study-app 🎯 核心更新 更新项 更新前 更新后 应用名称 考研伴侣 学习伴侣 成就数量 15个 50个 可兑换奖励 6个 20个 默认倒计时 2025-12-21 2026-12-21 🚀 完成的功能更新1. 品牌重命名将应用从”考研伴侣”重命名为”学习伴侣”,使其适用于任何学习目标: 1.1 修改的文件 文件路径 修改内容 index.html 页面标题从”考研伴侣”改为”学习伴侣” src/components/Layout.vue 品牌名称显示 src/components/MoreMenu.vue 用户区域名称 src/router/index.js 页面标题meta src/views/Home.vue 默认倒计时目标名 sr...
2026-02-10
学习伴侣App v2.1 - 成就系统视觉升级详解
学习伴侣App v2.1 - 成就系统视觉升级详解📋 更新概述本次更新于 2026-02-10 完成,对成就系统进行了全面的视觉升级,引入了稀有度系统和精美的动画效果。 GitHub 仓库:https://github.com/dafenqirunrunrun/love-study-app ✨ 核心更新 更新项 更新前 更新后 成就稀有度 无 5级(传说/史诗/稀有/精良/普通) 成就筛选 无 按稀有度筛选按钮 解锁效果 简单勾选标记 弹窗动画 + 彩带效果 卡片样式 统一风格 稀有度差异化样式 🎮 稀有度系统设计稀有度等级 稀有度 颜色 含义 示例成就 🏆 传说 (Legendary) 金色 最难解锁 千锤百炼、五百小时、全年无休 💜 史诗 (Epic) 紫色 较难解锁 任务狂人、专注大师、百日坚持 💎 稀有 (Rare) 蓝色 中等难度 学习达人、十小时、三十篇心得 🔥 精良 (Uncommon) 绿色 较易解锁 勤奋小蜜蜂、初次专注、一周坚持 ⚪ 普通 (Common) ...

2026-02-11
学习伴侣app-v2.2-打卡模块响应式修复
学习伴侣app v2.2 - 打卡模块响应式问题修复问题背景用户反馈用户反馈”习惯打卡”模块存在UI不更新问题: 点击”今日打卡”按钮后,日历中今天的日期仍然显示橙色(未完成状态) 热力图没有根据打卡强度更新颜色 数据已正确保存到localStorage,但UI没有反映变化 问题现象截图(待补充用户反馈截图) 问题分析初步调查通过代码审查发现问题可能出在Vue的响应式系统上。calendarDays和heatmapData都是计算属性,但它们直接读取localStorage.getItem(),而不是依赖Vue的响应式ref。 根因定位12345678// 问题代码 - calendarDays computed propertyconst calendarDays = computed(() => { const days = [] // 直接读取localStorage,Vue无法追踪变化 const savedCheckins = JSON.parse(localStorage.getItem('checkinHistory')...

2026-02-05
OpenCode (AI Agent) 实战全纪录:从入门到部署
OpenCode (AI Agent) 实战全纪录:从入门到部署日期: 2026年2月5日工具: OpenCode (CLI Agent)核心模型: Big Pickle (官方免费模型) / GLM-4.7目标: 零代码基础构建一个局域网即时聊天室 1. 工具背景 名称: OpenCode (opencode.ai) 定位: 开源 AI 编程 Agent,直接对标 Claude Code。 特点: 支持 CLI (命令行) 和 IDE 插件。 免费/低成本: 内置 Big Pickle、GLM-4.7 等免费模型,支持接入 DeepSeek。 Agent 能力: 能自动规划任务、创建文件、安装依赖、修复 Bug。 2. 安装与环境配置安装步骤使用 npm 全局安装: 1npm install -g opencode-ai 遇到的问题与解决方案问题 A: PowerShell 权限报错 现象: 提示 在此系统上禁止运行脚本。 解决: 修改执行策略。 1Set-ExecutionPolicy RemoteSigned -Scope Current...

2026-02-09
考研伴侣App完整开发记录 - Vue 3全功能学习规划助手
考研伴侣App完整开发记录项目概述考研伴侣是一个基于 Vue 3 + Vue Router + Vite + Tailwind CSS 构建的纯前端学习规划应用,专为考研学子设计。应用采用现代化的玻璃拟态(Glassmorphism)设计风格,支持深色/浅色模式切换,所有数据通过 LocalStorage 实现持久化存储。 GitHub 仓库:https://github.com/dafenqirunrunrun/love-study-app 技术栈 技术 用途 Vue 3 前端框架(Composition API) Vue Router 4 单页面应用路由 Vite 5 构建工具 Tailwind CSS 原子化CSS框架 LocalStorage 数据持久化存储 JavaScript (ES6+) 编程语言 核心功能模块1. 首页概览1.1 目标倒计时支持自定义目标名称和日期,从硬编码改为响应式设置: 12345678910111213// Settings.vue - 倒计时设置const countdownSettings = ...
评论