1. 项目概述与核心价值
作为一个长期混迹在美食圈和程序员圈的双料爱好者,我一直在寻找将两个爱好结合的机会。去年用SpringBoot+Vue+MySQL搭建的这个美食分享平台,算是我对"代码烹饪"的一次实践。这个平台本质上是一个垂直领域的社交应用,核心解决三个问题:
- 让普通用户能像发朋友圈一样分享美食(但更专业)
- 构建美食爱好者之间的互动网络(关注/点赞/收藏)
- 通过算法实现个性化推荐(类似小红书的美食版)
技术选型上,后端采用SpringBoot 2.7 + MyBatis Plus的组合,前端用Vue3 + Element Plus,数据库是MySQL 8.0。这套技术栈的选择基于以下考量:
- SpringBoot的自动配置和起步依赖能快速搭建RESTful API
- MyBatis Plus的ActiveRecord模式简化了数据库操作
- Vue3的Composition API更适合复杂交互场景
- Element Plus提供了现成的UI组件加速开发
提示:实际开发中发现,Element Plus的Upload组件需要特别处理跨域问题,建议在后端配置CORS过滤器而非在前端代理
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 前后端分离架构
采用经典的前后端分离模式,通过JSON进行数据交互。这种架构的优势在于:
- 前后端可以并行开发(前端Mock数据)
- 更清晰的职责划分(后端专注业务逻辑,前端专注交互)
- 便于后期扩展(如开发小程序只需复用API)
接口设计遵循RESTful规范,但做了适度灵活调整。例如美食列表接口:
java复制@GetMapping("/foods")
public Result<List<FoodVO>> getFoodList(
@RequestParam(required = false) Integer page,
@RequestParam(required = false) Integer size,
@RequestParam(required = false) String keyword) {
// 分页查询逻辑
}
2.2 数据库设计要点
核心表包括:
- 用户表(user):openid、昵称、头像
