用 Vue3 + SpringBoot 做毕设,我后悔没早知道这些坑

📅 发布时间:2026/7/5 23:34:57 👁️ 浏览次数:
用 Vue3 + SpringBoot 做毕设,我后悔没早知道这些坑
用 Vue3 SpringBoot 做毕设我后悔没早知道这些坑说实话当初选毕设技术栈的时候我纠结了很久。一方面想做个有逼格的项目另一方面又怕自己搞不定。最后选了 Vue3 SpringBoot 这个组合想着前后端分离听起来就很专业。结果呢光是前后端联调就花了我整整一周。现在回头看很多问题其实可以提前规避。今天把踩过的坑记录下来希望能帮到正在做毕设的你。为什么选择前后端分离在做毕设之前我问了问学长很多人推荐前后端分离说这样分工明确、“好维护”。当时我心想这不挺简单的嘛前端写页面后端写接口大家各干各的。真正上手之后才发现事情没那么简单。前后端分离确实有它的优势。首先前端可以用最新的框架和组件库页面效果可以做得很炫酷答辩的时候老师一看哇这界面挺现代的印象分就上去了。其次后端专注做业务逻辑和数据库不用掺和 HTML 和 CSS代码结构更清晰。最后分开部署之后修改某一方不会影响另一方调试起来相对独立。但代价是什么呢你得同时跑两个项目得处理跨域问题得统一接口文档得解决各种奇奇怪怪的兼容性问题。我室友用传统的 JSP/Servlet 写法两周就把整个项目写完了而我还在跟 CORS 较劲。所以我的建议是如果你的毕设时间很紧比如就一个月且没有前端基础慎重选择前后端分离。但如果你的毕设时间比较充裕比如两个月以上且想学到真东西前后端分离是值得的。第一个坑项目初始化就花了三天我以为搭建项目很简单不就是npm create vuelatest和spring init吗结果光是配环境就花了我三天。前端的问题是依赖下载慢。Vue3 的构建工具用起来没问题但有时候装个依赖要等半天。后来我换成了淘宝的镜像源情况有所好转但有时候还是会卡住。后端的问题是版本兼容。Spring Boot 3.x 对 Java 版本有要求必须用 Java 17 以上。我一开始用的 JDK 8项目怎么都跑不起来错误提示看得我一脸懵逼。后来换了 JDK 20 才搞定。还有一个坑是 Maven 仓库。很多公司的私有仓库在学校网络下访问不了导致某些依赖怎么都下载不下来。我最后把仓库配置改成了阿里云的镜像总算解决了。我的经验是毕设开始之前先花一整天把环境全部配好。Node、Java、Maven、数据库所有工具都装一遍跑通最基本的 Hello World。不要想着边做边配否则做到一半发现环境有问题会很崩溃。第二个坑数据库设计搞错了这是一个血泪教训。我的项目有个用户表设计的时候把用户类型普通用户、管理员存在一个字段里用整数表示。0 是普通用户1 是管理员。答辩的时候老师问我“如果以后要加更多的用户类型怎么办比如VIP用户、超级管理员”我当时愣住了。是啊扩展性完全没考虑。后来我想了想正确的做法应该是用枚举或者独立的角色表而不是简单的整数。还有一点是时间字段。我一开始用的datetime结果前端显示的时候总是有时区问题。后来改成了时间戳前端自己格式化虽然麻烦一点但至少不会出错。数据库设计这件事我建议在做项目之前先把 ER图画好给老师看看有什么问题。别自己闷头做做到一半发现设计有缺陷改起来成本很高。第三个坑前后端联调崩溃了这是整个毕设过程中最让我崩溃的阶段。前端调用后端接口返回 403 Forbidden。我以为后端接口写错了检查了一遍又一遍代码没问题。后来发现是跨域问题。前后端分离部署的时候前端和后端在不同的端口浏览器出于安全考虑不允许跨域请求。我在后端加了 CORS 配置但漏掉了一个来源域名。改完之后返回 401 Unauthorized。这次是认证问题。前端把 token 放在请求头里但后端没配置拦截器放行这个头。改完之后终于不报错了但数据是空的。我以为是后端没查到数据结果是前端解析响应的时候格式错了。来来回回搞了七八天我整个人都要疯了。后来我想了个办法用 Apifox或者 Postman先测试后端接口确认接口没问题了再让前端调用。这样可以快速定位问题出在前端还是后端。还有一个技巧是打开浏览器的开发者工具看 Network 面板里的请求和响应。绝大多数问题都能从这里看出来。第四个坑前端状态管理一团糟我的项目用的是 Pinia因为 Vue3 推荐这个。一开始我觉得状态管理很简单不就是存几个数据吗用户信息、列表数据、加载状态加进去就完事了。结果做到后面状态越来越乱。三个页面都在修改同一个状态不知道哪个页面改的出 Bug 了都找不到原因。有一次我删除了一个数据页面显示删除了但后端数据库里还在。我以为是后端接口有问题查了半天发现是另一个组件也在修改这个状态覆盖了我的操作。后来我学乖了。状态管理要遵循单向数据流组件只能修改自己的状态要改公共状态必须通过 actions。Pinia 的 actions 是同步的容易追踪调用链。还有一个原则是能不用全局状态就不用全局状态。很多数据只在单个组件里用完全可以存在组件的ref里没必要放到 Pinia 里。第五个坑部署到服务器傻眼了本地跑得好好的一部署到服务器各种问题都来了。首先是数据库连接。本地我用的是 MySQL 8.0服务器上装的是 5.7有个语法不兼容。本地跑得没问题一部署查询就报错。其次是端口冲突。Spring Boot 默认用 8080 端口服务器上另一个项目已经占用了这个端口导致启动失败。还有文件上传路径的问题。本地我用的绝对路径上传到服务器之后路径完全不对图片都显示不出来。部署这件事我的建议是毕设答辩前两周就开始部署不要等到最后。预留足够的时间处理这些意外情况。服务器可以用阿里云、腾讯云的学生机很便宜。或者用 Docker 部署把环境打包进去能省很多事。给学弟学妹的建议做了三个月毕设我总结了几条经验第一技术栈不要贪多。Vue3 SpringBoot MySQL 这套组合已经够复杂了别再加 Redis、Elasticsearch 什么的了。你是来做毕设的不是来造轮子的。第二早点跟导师沟通。我一开始自己闷头做做到一半导师说方向不对全部重来。那叫一个崩溃。第三做好版本控制。用 Git 托管代码每天提交一次。答辩前如果搞砸了至少能回退到之前的版本。第四多写注释。代码三个月之后你自己都看不懂更别说答辩的时候老师问你某个功能怎么实现的了。第五答辩之前演练几遍。熟悉自己的项目能在 5 分钟内讲清楚整体架构和技术选型。写在最后说实话做毕设的这三个月是我大学四年成长最快的一段时间。我从一个只会写 CRUD 的小白变成了能独立完成前后端分离项目的开发者。虽然过程很痛苦但学到的东西是实实在在的。如果你正在做毕设正在被各种问题折磨不要慌大家都是这么过来的。遇到问题多查文档多逛技术论坛多问问同学和老师。最后祝大家都能顺利通过答辩有问题可以在评论区交流我会尽量回复。