当前位置: 首页 > article >正文

山东大学软件学院项目实训-创新实训-计科智伴(四)——个人博客(从UI优化到功能完善的蜕变之路)

写在前面距离上一篇博客已经过去了一段时间。这段时间里计科智伴项目经历了一次从内到外的蜕变——从最初的页面原型搭建到UI全面优化再到引入状态管理、完善核心功能模块。这篇博客主要记录我在开发过程中的思考、遇到的问题以及解决思路。一、UI优化从能用到好用在完成了基础页面搭建后项目已经具备了所有核心功能。但实际展示时我发现虽然功能完整但在视觉层次和整体一致性上存在明显不足。这促使我思考一个面向真实用户的产品仅仅能用是不够的还必须好用。因此我决定对整个项目进行系统性的UI优化。第一步是建立统一的设计规范在样式文件中定义了全局的设计变量包括主色调、功能色、间距系统等。这样做的好处是显而易见的当需要调整整体风格时只需要修改一处定义所有页面都会同步更新。在优化报告页面时我遇到了一个典型的CSS布局问题设置了右侧内边距但内容仍然紧贴屏幕边缘。排查后发现问题的根源在于默认的CSS盒模型计算方式——当元素设置了宽度后再添加paddingpadding会增加元素的总宽度导致内容溢出容器。解决方案是使用box-sizing属性将盒模型设置为border-box模式。这样padding和border都会包含在元素宽度内。虽然这是一个基础的CSS知识点但在实际开发中很容易被忽略。修复了报告页面后我系统性地检查了所有页面确保每个容器都正确设置了盒模型。//修复前的代码 scss .scroll-container { padding: 30rpx; // 未设置 box-sizing默认使用 content-box // padding 会在宽度之外额外计算导致内容溢出 } //修复后的代码 scss .scroll-container { padding: 30rpx 20rpx; box-sizing: border-box; // 关键padding 包含在宽度内 } 二、状态管理在引入状态管理之前项目中的数据管理存在明显问题。以用户信息为例这个数据在首页、个人中心、学习计划等多个页面都需要使用但每个页面都独立维护自己的数据副本。这就导致了数据冗余、同步困难、维护成本高等问题。在状态管理方案的选择上我对比了Vuex和Pinia。考虑到项目使用的是Vue 3框架并且Pinia是官方推荐的方案API更加简洁直观最终选择了Pinia。在Store模块的设计上我遵循了单一职责原则设计了七个核心模块用户信息模块、学习数据模块、通知模块、练习模块、对话模块、学习计划模块和成就模块。每个Store只关心自己负责的业务领域职责清晰便于维护。以通知模块为例Store的结构如下export const useNotificationStore defineStore(notification, { state: () ({ notifications: [], unreadCount: 0, currentFilter: all, settings: { enabled: true, systemEnabled: true, taskEnabled: true } }), getters: { filteredNotifications: (state) { if (state.currentFilter all) { return state.notifications } return state.notifications.filter(item item.type state.currentFilter) } }, actions: { markAsRead(notificationId) { const notification this.notifications.find(item item.id notificationId) if (notification !notification.isRead) { notification.isRead true this.unreadCount Math.max(0, this.unreadCount - 1) } } }, persist: { key: notification-store, storage: { getItem: (key) uni.getStorageSync(key), setItem: (key, value) uni.setStorageSync(key, value) }, paths: [notifications, unreadCount, settings] } })将现有页面迁移到Pinia的过程中遇到了响应式更新的问题。一开始在页面中直接调用Store的方法修改数据发现数据变化后页面没有重新渲染。迁移前的错误写法// 错误直接修改state不触发响应式更新 methods: { updateData() { this.notificationStore.notifications [] } }迁移后的正确写法// 正确通过computed返回store实例通过action修改数据 computed: { notificationStore() { return useNotificationStore() } }, methods: { updateData() { this.notificationStore.clearAllNotifications() } }另一个问题是数据加载时机的选择。uni-app的页面生命周期中onLoad只在页面首次加载时触发而onShow在每次页面显示时都会触发。对于用户信息这类只需要初始化一次的数据放在onLoad中加载即可而对于未读通知数量这类需要实时刷新的数据则必须放在onShow中加载。三、核心功能开发3.1 学习计划功能学习计划是项目的核心功能之一。在设计时我主要考虑了以下几个方面首先是学习计划的展示方式采用了按天展示的结构将一周的学习任务以列表形式呈现每个任务都有明确的状态标识。其次是任务状态的流转逻辑用户可以通过点击任务来切换状态形成完整的任务执行闭环。第三是打卡签到功能用户每天完成学习任务后可以进行打卡系统会记录连续学习的天数实现时需要考虑防重复打卡的逻辑。最后是进度追踪功能系统会自动计算学习计划的总体完成百分比并以进度条的形式展示给用户。点击开始任务再次点击任务完成3.2 个人中心与成就系统个人中心是用户查看自己学习成果的主要入口。在这个页面中我整合了来自多个Store模块的数据包括用户基本信息、学习统计数据、成就信息等。成就系统的设计思路是游戏化学习。通过设置不同的成就目标和等级体系给用户持续的正向反馈。成就的获取条件涵盖了多个维度学习连续性、学习量、学习效果等。每个成就解锁时用户会获得相应的积分和经验值奖励经验值积累到一定程度后可以提升等级。3.3 消息通知中心消息通知中心是这次开发的重点功能之一。通知列表页支持按类型筛选包括全部通知、系统通知、任务提醒、成就通知和AI通知五个分类。通知的已读管理支持单条标记已读和全部标记已读两种操作方式。通知设置页是这次新增的功能模块用户可以精细化管理自己的通知偏好包括通知总开关、各类通知的独立开关、免打扰时段设置、通知提醒方式等。当用户关闭通知总开关时其他设置项会自动隐藏避免无效操作。在技术层面这次项目让我在多个方面得到了提升。在Vue框架方面从只会使用Options API到能够熟练使用Composition API和Pinia进行状态管理对Vue的响应式原理有了更深的理解。在uni-app框架方面掌握了跨平台开发的要点了解了iOS和Android在状态栏、安全区域、导航栏等方面的差异。在CSS方面对盒模型、Flexbox布局的理解更加深入能够独立解决各种布局问题。这段时间的开发经历让我真正体会到了从需求分析到功能实现的完整过程。前端开发不仅仅是编写代码更需要理解用户需求、设计合理的架构、关注用户体验。感谢这次项目实训让我有机会将课堂上学到的知识应用到实际项目中。在实践中学习在问题中成长这是我最宝贵的收获。

相关文章:

山东大学软件学院项目实训-创新实训-计科智伴(四)——个人博客(从UI优化到功能完善的蜕变之路)

写在前面:距离上一篇博客已经过去了一段时间。这段时间里,"计科智伴"项目经历了一次从内到外的蜕变——从最初的页面原型搭建,到UI全面优化,再到引入状态管理、完善核心功能模块。这篇博客主要记录我在开发过程中的思考…...

3大核心功能详解:StarRailAssistant让你轻松玩转崩坏星穹铁道自动化

3大核心功能详解:StarRailAssistant让你轻松玩转崩坏星穹铁道自动化 【免费下载链接】StarRailAssistant 崩坏:星穹铁道自动化 | 崩坏:星穹铁道自动锄大地 | 崩坏:星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: https:…...

不只是Try-Catch:给SAP ABAP函数Exception消息加上多语言‘外挂’(附代码)

不只是Try-Catch:给SAP ABAP函数Exception消息加上多语言‘外挂’(附代码) 在SAP系统开发中,函数模块的异常处理一直是开发者需要面对的挑战之一。特别是当系统需要支持多语言环境时,如何确保终端用户看到的错误信息是…...

零NRE成本实现FPGA转ASIC:技术原理、流程与选型指南

1. 项目概述:零NRE成本的FPGA转ASIC之路在芯片设计领域,FPGA(现场可编程门阵列)和ASIC(专用集成电路)的路线选择,一直是工程师和产品经理们需要反复权衡的经典命题。FPGA以其灵活性、快速上市的…...

工业电源模块选型参考:钡特电源 AD60-23S24 与 LD60-23B24R2 封装兼容解析

工业控制、智能仪表及电力设备等领域,60W 功率级 AC-DC 模块电源因高集成度、小体积的特性,成为硬件工程师与研发工程师选型的核心品类。广州钡源专注于高品质标准工业模块电源,旗下钡特电源 AD60-23S24 作为该功率段的代表性产品&#xff0c…...

2025届必备的六大降重复率网站实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于知网AI检测系统而言,要想降低文本里人工智能生成的痕迹,得从语言…...

R3nzSkin国服版完整指南:如何在英雄联盟中免费使用所有皮肤

R3nzSkin国服版完整指南:如何在英雄联盟中免费使用所有皮肤 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server R3nzSkin国服特供版是一款专门为…...

2026届毕业生推荐的六大降AI率神器实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是人工智能生成内容越来越常见,那降低文本的AI可检测性就成了重要技能。首先&…...

2026最权威的十大降AI率神器推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 若要在撰写文本之际,为了降低被人工智能检测工具识别的可能性,那么可…...

利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略 对于依赖大模型 API 的生产系统而言,服务的稳定性至关重要。…...

40岁P8年薪130万,空窗两年后只剩70万:真正缩水的不是薪资

来自:推荐一个程序员编程资料站:http://cxyroad.com副业赚钱专栏:https://xbt100.top2024年IDEA最新激活方法后台回复:激活码CSDN免登录复制代码插件下载:CSDN复制插件以下是正文。01 | 从130万到70万,不是…...

5个简单步骤掌握IronyModManager:Paradox游戏模组管理终极指南

5个简单步骤掌握IronyModManager:Paradox游戏模组管理终极指南 【免费下载链接】IronyModManager Mod Manager for Paradox Games. Official Discord: https://discord.gg/t9JmY8KFrV 项目地址: https://gitcode.com/gh_mirrors/ir/IronyModManager IronyMod…...

终极植物大战僵尸辅助工具:如何免费解锁游戏隐藏功能

终极植物大战僵尸辅助工具:如何免费解锁游戏隐藏功能 【免费下载链接】pvztools 植物大战僵尸原版 1.0.0.1051 修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztools 植物大战僵尸辅助工具PvZ Tools是一款专为经典游戏《植物大战僵尸》1.0.0.1051版…...

终极指南:如何快速配置和优化yuzu Switch模拟器

终极指南:如何快速配置和优化yuzu Switch模拟器 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是一款功能强大的任天堂Switch模拟器,能够在PC上流畅运行Switch游戏。本指南将帮助你从零…...

不止于安装:用Mosquitto自带工具mosquitto_pub/sub快速测试你的MQTT服务器

从零验证:用Mosquitto命令行工具5分钟完成MQTT服务测试 刚完成Mosquitto安装的开发者常会遇到一个尴尬场景——虽然安装程序显示"成功完成",但面对安装目录里十几个.exe文件却不知如何验证服务是否真正可用。这种不确定性就像买了一套高级音响…...

3分钟搞定!Applite镜像加速让macOS软件下载飞起来 [特殊字符]

3分钟搞定!Applite镜像加速让macOS软件下载飞起来 🚀 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Homebrew下载软件慢如蜗牛而烦恼吗&#xf…...

三极管装反了还能用吗?我用8050和12V电源实测,结果有点意外

三极管装反后的真实表现:从8050实测到电路设计启示 引言 面包板上的三极管突然冒烟了——这是我作为电子爱好者入门时最难忘的"学费"之一。当时怎么也没想到,那个看似无害的小错误(把8050三极管的集电极和发射极接反)会…...

从硬件分压到软件查表:手把手教你为你的Arduino/STM32项目添加精准电量显示功能

从硬件分压到软件查表:手把手教你为Arduino/STM32项目添加精准电量显示 在创客项目中,电池供电设备的电量显示一直是个既基础又关键的痛点。想象你正在调试一台自制的便携气象站,突然断电导致数据丢失;或是遥控车在关键时刻电量耗…...

终极免费MP4视频修复工具:如何用Untrunc快速恢复损坏视频文件

终极免费MP4视频修复工具:如何用Untrunc快速恢复损坏视频文件 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你…...

Horos开源医学影像平台:从零到专业诊断的完整解决方案

Horos开源医学影像平台:从零到专业诊断的完整解决方案 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based up…...

EkyBot连接器:构建RPA与外部系统集成的中心化桥梁

1. 项目概述与核心价值 最近在折腾一些自动化流程,特别是想把不同平台的数据和操作打通,发现一个叫 regiomag/ekybot-connector 的项目挺有意思。简单来说,这是一个连接器,或者叫“桥梁”,专门用来把 EkyBot 这个自动…...

终极免费文档下载工具:kill-doc完全使用指南

终极免费文档下载工具:kill-doc完全使用指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的烦…...

告别Root:用ADB命令玩转Android导航栏,隐藏返回/主页键的另类妙用

告别Root:用ADB命令玩转Android导航栏,隐藏返回/主页键的另类妙用 作为一名Android深度用户,你是否曾因系统限制而苦恼?想要隐藏导航栏按钮来获得更沉浸的体验,或是保护隐私不被窥探,却又不想冒险Root设备&…...

3步快速掌握MetaboAnalystR:从LC-MS原始数据到生物学发现的完整指南

3步快速掌握MetaboAnalystR:从LC-MS原始数据到生物学发现的完整指南 【免费下载链接】MetaboAnalystR R package for MetaboAnalyst 项目地址: https://gitcode.com/gh_mirrors/me/MetaboAnalystR MetaboAnalystR是一款功能强大的R语言代谢组学分析工具包&am…...

赫歇尔望远镜捕捉小行星2005 YU55:深空观测的极限挑战与协同作战

1. 一次精心策划的“邂逅”:赫歇尔望远镜如何捕捉小行星2005 YU55在深空探测这个领域,成功往往不是偶然。它更像是无数个日夜的精密计算、系统调试和预案推演,最终在某个特定的时间窗口,与一个转瞬即逝的宇宙机遇迎头撞上。2011年…...

3分钟快速激活Windows和Office:KMS_VL_ALL_AIO开源工具的完整方案

3分钟快速激活Windows和Office:KMS_VL_ALL_AIO开源工具的完整方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统提示"需要激活"而烦恼吗?O…...

时变路网下考虑时间满意度的L连锁公司配送路径【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)路段行程时间深度时空预测与顾客时间满意度建模:…...

Altera 20nm SoC FPGA:异构集成、高速收发器与浮点DSP的技术演进

1. 项目概述:深入Altera 20nm技术的内核最近和Altera的首席技术官Misha Burich聊了聊,收获不小。作为在数字逻辑设计和可编程器件领域摸爬滚打了十几年的工程师,我们平时关注的大多是数据手册上的参数、开发工具链的稳定性,或者是…...

CES深度复盘:硬件创新趋势与半导体技术洞察

1. 从硬件回归到趋势洞察:一场CES展的深度复盘 又一年CES落幕,拉斯维加斯的喧嚣逐渐散去,展台上的炫目灯光熄灭,但留给行业的思考才刚刚开始。每年一月的这场科技盛会,早已超越了单纯的新品发布会范畴,它更…...

OpenClaw生产级AI Agent模板:从实验室到7x24稳定运行的实战指南

1. 项目概述:OpenClaw生产级模板库如果你正在尝试将AI智能体(Agent)从实验室的“玩具”推向真实的生产环境,那么你大概率会遇到和我一样的问题:如何让这些Agent稳定、可靠、可监控地7x24小时运行?如何设计一…...