E-Blog 个人博客系统的设计与实现摘要随着互联网技术的快速发展个人博客已成为知识分享和个人品牌建设的重要平台。本文设计并实现了一个基于 Spring Boot Vue.js 的个人博客系统 E-Blog系统包含文章发布与管理、用户互动交流、私信系统、管理后台等功能模块。采用前后端分离架构后端使用 Spring Boot 框架前端使用 Vue.js Element UI数据库采用 MySQL。系统具有良好的可扩展性、安全性和用户体验。关键词博客系统Spring BootVue.js前后端分离B/S架构系统预览第一章 绪论1.1 研究背景与意义在信息爆炸的时代个人博客作为一种重要的知识分享和交流平台具有以下重要意义知识沉淀博客为创作者提供了整理和沉淀知识的空间便于系统性地产出高质量内容个人品牌通过持续输出专业内容创作者可以建立个人品牌影响力交流互动博客的评论、点赞等功能促进了创作者与读者之间的交流技术展示对于技术人员而言技术博客是展示技术能力的重要窗口1.2 国内外研究现状目前市面上存在多种博客解决方案传统博客平台如 CSDN、博客园、掘金等提供托管服务但定制性有限静态博客框架如 Hexo、Hugo、Jekyll 等轻量但需要技术基础内容管理系统如 WordPress、Ghost 等功能强大但部署复杂本系统结合以上方案的优点提供开箱即用的个人博客解决方案。1.3 本文主要工作本文主要完成以下工作分析博客系统的功能需求设计系统架构实现文章发布、编辑、分类管理等核心功能实现用户互动功能包括点赞、收藏、评论、关注等设计并实现私信系统支持用户间实时交流开发管理后台提供数据分析、内容审核等功能进行系统测试与性能优化第二章 系统需求分析2.1 功能需求分析2.1.1 用户管理模块功能描述用户注册支持用户名、密码注册可设置头像和昵称用户登录支持账号密码登录记住登录状态个人信息查看和修改个人资料、头像关注功能关注其他用户查看关注列表和粉丝列表2.1.2 文章管理模块功能描述文章创作支持 Markdown 格式编写文章封面上传支持上传文章封面图片分类标签支持文章分类和标签管理草稿保存支持保存为草稿后续继续编辑文章发布提交审核管理员审核后发布文章编辑编辑已发布的文章文章删除删除自己的文章2.1.3 互动功能模块功能描述文章浏览浏览已发布的文章记录浏览量点赞功能对文章点赞取消点赞收藏功能收藏喜欢的文章查看收藏列表评论功能发表评论回复他人评论提及在评论中其他用户发送通知2.1.4 私信功能模块功能描述发送私信向其他用户发送私信消息列表查看所有聊天会话历史记录查看与某用户的所有聊天记录未读提醒显示未读消息数量2.1.5 管理后台模块功能描述数据分析访问趋势、热门文章统计文章管理审核、发布、下架文章用户管理查看用户列表禁用/启用用户评论管理审核、删除评论分类管理管理文章分类2.2 非功能需求分析性能需求页面加载时间 3秒接口响应时间 500ms安全需求密码加密存储防止 SQL 注入、XSS 攻击可用性需求界面友好操作简单响应式布局可维护性代码结构清晰注释完善易于扩展第三章 系统设计3.1 系统架构设计系统采用B/S 架构前后端分离的开发模式┌─────────────────────────────────────────────────────────┐ │ 用户界面层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 前台页面 │ │ 管理后台 │ │ 移动端适配 │ │ │ │ (Vue.js) │ │ (Vue.js) │ │ (响应式) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 接口服务层 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ Spring Boot REST API │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │用户模块 │ │文章模块 │ │私信模块 │ ... │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ MySQL │ │ Redis │ │ 文件存储 │ │ │ │ (主数据库) │ │ (缓存) │ │ (图片等) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘3.2 技术选型3.2.1 后端技术栈技术版本说明Spring Boot2.7.x核心框架简化 Spring 配置MyBatis-Plus3.5.xORM 框架简化数据库操作MySQL8.0关系型数据库Druid1.2.x数据库连接池JWT-身份认证方案Lombok-简化 Java 代码3.2.2 前端技术栈技术版本说明Vue.js2.x渐进式 JavaScript 框架Element UI2.xUI 组件库Axios-HTTP 请求库Vue Router-路由管理Vuex-状态管理ECharts5.x图表库Markdown-it-Markdown 解析器3.3 数据库设计3.3.1 E-R 图┌─────────┐ ┌─────────┐ ┌─────────┐ │ User │ │ Article │ │ Comment │ ├─────────┤ ├─────────┤ ├─────────┤ │ id │───┐ │ id │───┐ │ id │ │ username│ │ │ title │ │ │ content │ │ password│ │ │ content │ │ │ user_id │──┐ │ nickname│ │ │ user_id │───┼───│article_id│ │ │ avatar │ │ │ status │ │ │parent_id│ │ └─────────┘ │ └─────────┘ │ └─────────┘ │ │ │ │ │ │ │ └───────┼─────────┘ │ │ │ │ └─────────────────┘─────────────────────────┘3.3.2 主要数据表设计用户表 (t_user)CREATETABLEt_user(idBIGINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)NOTNULLUNIQUE,passwordVARCHAR(100)NOTNULL,nicknameVARCHAR(50),avatarVARCHAR(255),emailVARCHAR(100),bioVARCHAR(500),blog_countINTDEFAULT0,fans_countINTDEFAULT0,follow_countINTDEFAULT0,statusTINYINTDEFAULT1,create_timeDATETIME,update_timeDATETIME);文章表 (t_article)CREATETABLEt_article(idBIGINTPRIMARYKEYAUTO_INCREMENT,user_idBIGINTNOTNULL,category_idBIGINT,titleVARCHAR(200)NOTNULL,summaryVARCHAR(500),contentLONGTEXT,coverVARCHAR(255),viewsBIGINTDEFAULT0,like_countINTDEFAULT0,collect_countINTDEFAULT0,comment_countINTDEFAULT0,is_topTINYINTDEFAULT0,is_essenceTINYINTDEFAULT0,statusTINYINTDEFAULT0,publish_timeDATETIME,create_timeDATETIME,update_timeDATETIME);私信表 (t_message)CREATETABLEt_message(idBIGINTPRIMARYKEYAUTO_INCREMENT,from_user_idBIGINTNOTNULL,to_user_idBIGINTNOTNULL,contentVARCHAR(1000)NOTNULL,is_readTINYINTDEFAULT0,create_timeDATETIME);3.4 接口设计系统采用 RESTful API 设计风格接口方法说明/api/auth/loginPOST用户登录/api/auth/registerPOST用户注册/api/articlesGET获取文章列表/api/articles/{id}GET获取文章详情/api/articlesPOST创建文章/api/articles/{id}PUT更新文章/api/articles/{id}/likePOST点赞文章/api/commentsGET获取评论列表/api/commentsPOST发表评论/api/message/sendPOST发送私信/api/message/conversationsGET获取会话列表第四章 系统实现4.1 后端核心实现4.1.1 项目结构backend/ ├── src/main/java/com/example/blog/ │ ├── config/ # 配置类 │ │ ├── WebConfig.java │ │ ├── SecurityConfig.java │ │ └── UserContext.java │ ├── controller/ # 控制器 │ │ ├── portal/ # 前台接口 │ │ └── admin/ # 管理后台接口 │ ├── service/ # 服务层 │ │ └── impl/ # 服务实现 │ ├── mapper/ # 数据访问层 │ ├── entity/ # 实体类 │ │ ├── po/ # 持久化对象 │ │ ├── vo/ # 视图对象 │ │ └── dto/ # 数据传输对象 │ └── util/ # 工具类 └── src/main/resources/ ├── application.yml # 配置文件 └── mapper/ # MyBatis 映射文件4.1.2 身份认证实现系统使用 JWT 进行身份认证// JWT 工具类核心代码publicclassJwtUtils{publicstaticStringgenerateToken(LonguserId,Stringusername){returnJwts.builder().setSubject(username).claim(userId,userId).setIssuedAt(newDate()).setExpiration(newDate(System.currentTimeMillis()EXPIRE)).signWith(SignatureAlgorithm.HS512,SECRET).compact();}publicstaticClaimsparseToken(Stringtoken){returnJwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody();}}4.1.3 私信系统实现// 私信服务核心实现OverridepublicPageMessagegetConversationMessages(LonguserId,LongotherId,IntegerpageNum,IntegerpageSize){LambdaQueryWrapperMessagewrappernewLambdaQueryWrapper();// 查询两人之间的所有消息wrapper.nested(i-i.eq(Message::getFromUserId,userId).eq(Message::getToUserId,otherId)).or().nested(i-i.eq(Message::getFromUserId,otherId).eq(Message::getToUserId,userId)).orderByDesc(Message::getCreateTime);returnmessageMapper.selectPage(newPage(pageNum,pageSize),wrapper);}4.2 前端核心实现4.2.1 项目结构frontend/ ├── public/ # 静态资源 ├── src/ │ ├── api/ # API 接口 │ ├── assets/ # 资源文件 │ ├── components/ # 公共组件 │ ├── router/ # 路由配置 │ ├── store/ # Vuex 状态管理 │ ├── utils/ # 工具函数 │ └── views/ # 页面组件 │ ├── portal/ # 前台页面 │ │ ├── Layout.vue │ │ ├── Home.vue │ │ ├── Login.vue │ │ ├── ArticleDetail.vue │ │ └── Personal.vue │ └── admin/ # 管理后台页面 │ ├── Layout.vue │ ├── Dashboard.vue │ └── ... └── package.json4.2.2 状态管理实现// Vuex 用户模块exportdefault{namespaced:true,state:{token:Cookies.get(token)||,userInfo:JSON.parse(localStorage.getItem(userInfo)||{})},mutations:{SET_TOKEN(state,token){state.tokentoken Cookies.set(token,token)},SET_USER_INFO(state,info){state.userInfoinfo localStorage.setItem(userInfo,JSON.stringify(info))}},actions:{asynclogin({commit},loginForm){constresawaitloginApi(loginForm)commit(SET_TOKEN,res.data.token)// 获取用户信息constuserResawaitgetUserInfoApi()commit(SET_USER_INFO,userRes.data)}}}4.2.3 Markdown 编辑器集成// Markdown 渲染importMarkdownItfrommarkdown-itconstmdnewMarkdownIt({html:true,linkify:true,typographer:true})exportfunctionrenderMarkdown(content){returnmd.render(content)}第五章 系统测试5.1 功能测试测试模块测试用例预期结果实际结果用户注册输入合法信息注册注册成功通过用户登录输入正确账号密码登录成功通过文章发布填写完整信息发布发布成功待审核通过文章浏览访问文章详情正确显示内容通过点赞功能点击点赞按钮点赞数1通过评论功能发表评论评论显示通过私信功能发送私信消息送达通过5.2 性能测试使用 JMeter 进行压力测试接口并发数平均响应时间TPS首页加载100120ms833文章列表10085ms1176文章详情10065ms1538用户登录100150ms667第六章 总结与展望6.1 总结本文设计并实现了一个功能完善的个人博客系统 E-Blog主要完成了以下工作系统架构设计采用前后端分离架构后端使用 Spring Boot前端使用 Vue.js核心功能实现实现了文章发布、编辑、分类管理、Markdown 支持等功能互动功能实现实现了点赞、收藏、评论、关注等社交功能私信系统实现实现了用户间的私信交流功能管理后台实现实现了数据分析、内容审核、用户管理等管理功能界面设计优化设计了美观的用户界面优化了用户体验致谢感谢所有开源项目的贡献者使本系统的开发成为可能。特别感谢 Spring Boot、Vue.js、Element UI 等开源社区提供的优秀框架和组件库。
基于SpringBoot+Vue的个人博客系统设计
E-Blog 个人博客系统的设计与实现摘要随着互联网技术的快速发展个人博客已成为知识分享和个人品牌建设的重要平台。本文设计并实现了一个基于 Spring Boot Vue.js 的个人博客系统 E-Blog系统包含文章发布与管理、用户互动交流、私信系统、管理后台等功能模块。采用前后端分离架构后端使用 Spring Boot 框架前端使用 Vue.js Element UI数据库采用 MySQL。系统具有良好的可扩展性、安全性和用户体验。关键词博客系统Spring BootVue.js前后端分离B/S架构系统预览第一章 绪论1.1 研究背景与意义在信息爆炸的时代个人博客作为一种重要的知识分享和交流平台具有以下重要意义知识沉淀博客为创作者提供了整理和沉淀知识的空间便于系统性地产出高质量内容个人品牌通过持续输出专业内容创作者可以建立个人品牌影响力交流互动博客的评论、点赞等功能促进了创作者与读者之间的交流技术展示对于技术人员而言技术博客是展示技术能力的重要窗口1.2 国内外研究现状目前市面上存在多种博客解决方案传统博客平台如 CSDN、博客园、掘金等提供托管服务但定制性有限静态博客框架如 Hexo、Hugo、Jekyll 等轻量但需要技术基础内容管理系统如 WordPress、Ghost 等功能强大但部署复杂本系统结合以上方案的优点提供开箱即用的个人博客解决方案。1.3 本文主要工作本文主要完成以下工作分析博客系统的功能需求设计系统架构实现文章发布、编辑、分类管理等核心功能实现用户互动功能包括点赞、收藏、评论、关注等设计并实现私信系统支持用户间实时交流开发管理后台提供数据分析、内容审核等功能进行系统测试与性能优化第二章 系统需求分析2.1 功能需求分析2.1.1 用户管理模块功能描述用户注册支持用户名、密码注册可设置头像和昵称用户登录支持账号密码登录记住登录状态个人信息查看和修改个人资料、头像关注功能关注其他用户查看关注列表和粉丝列表2.1.2 文章管理模块功能描述文章创作支持 Markdown 格式编写文章封面上传支持上传文章封面图片分类标签支持文章分类和标签管理草稿保存支持保存为草稿后续继续编辑文章发布提交审核管理员审核后发布文章编辑编辑已发布的文章文章删除删除自己的文章2.1.3 互动功能模块功能描述文章浏览浏览已发布的文章记录浏览量点赞功能对文章点赞取消点赞收藏功能收藏喜欢的文章查看收藏列表评论功能发表评论回复他人评论提及在评论中其他用户发送通知2.1.4 私信功能模块功能描述发送私信向其他用户发送私信消息列表查看所有聊天会话历史记录查看与某用户的所有聊天记录未读提醒显示未读消息数量2.1.5 管理后台模块功能描述数据分析访问趋势、热门文章统计文章管理审核、发布、下架文章用户管理查看用户列表禁用/启用用户评论管理审核、删除评论分类管理管理文章分类2.2 非功能需求分析性能需求页面加载时间 3秒接口响应时间 500ms安全需求密码加密存储防止 SQL 注入、XSS 攻击可用性需求界面友好操作简单响应式布局可维护性代码结构清晰注释完善易于扩展第三章 系统设计3.1 系统架构设计系统采用B/S 架构前后端分离的开发模式┌─────────────────────────────────────────────────────────┐ │ 用户界面层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 前台页面 │ │ 管理后台 │ │ 移动端适配 │ │ │ │ (Vue.js) │ │ (Vue.js) │ │ (响应式) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 接口服务层 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ Spring Boot REST API │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │用户模块 │ │文章模块 │ │私信模块 │ ... │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ MySQL │ │ Redis │ │ 文件存储 │ │ │ │ (主数据库) │ │ (缓存) │ │ (图片等) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘3.2 技术选型3.2.1 后端技术栈技术版本说明Spring Boot2.7.x核心框架简化 Spring 配置MyBatis-Plus3.5.xORM 框架简化数据库操作MySQL8.0关系型数据库Druid1.2.x数据库连接池JWT-身份认证方案Lombok-简化 Java 代码3.2.2 前端技术栈技术版本说明Vue.js2.x渐进式 JavaScript 框架Element UI2.xUI 组件库Axios-HTTP 请求库Vue Router-路由管理Vuex-状态管理ECharts5.x图表库Markdown-it-Markdown 解析器3.3 数据库设计3.3.1 E-R 图┌─────────┐ ┌─────────┐ ┌─────────┐ │ User │ │ Article │ │ Comment │ ├─────────┤ ├─────────┤ ├─────────┤ │ id │───┐ │ id │───┐ │ id │ │ username│ │ │ title │ │ │ content │ │ password│ │ │ content │ │ │ user_id │──┐ │ nickname│ │ │ user_id │───┼───│article_id│ │ │ avatar │ │ │ status │ │ │parent_id│ │ └─────────┘ │ └─────────┘ │ └─────────┘ │ │ │ │ │ │ │ └───────┼─────────┘ │ │ │ │ └─────────────────┘─────────────────────────┘3.3.2 主要数据表设计用户表 (t_user)CREATETABLEt_user(idBIGINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)NOTNULLUNIQUE,passwordVARCHAR(100)NOTNULL,nicknameVARCHAR(50),avatarVARCHAR(255),emailVARCHAR(100),bioVARCHAR(500),blog_countINTDEFAULT0,fans_countINTDEFAULT0,follow_countINTDEFAULT0,statusTINYINTDEFAULT1,create_timeDATETIME,update_timeDATETIME);文章表 (t_article)CREATETABLEt_article(idBIGINTPRIMARYKEYAUTO_INCREMENT,user_idBIGINTNOTNULL,category_idBIGINT,titleVARCHAR(200)NOTNULL,summaryVARCHAR(500),contentLONGTEXT,coverVARCHAR(255),viewsBIGINTDEFAULT0,like_countINTDEFAULT0,collect_countINTDEFAULT0,comment_countINTDEFAULT0,is_topTINYINTDEFAULT0,is_essenceTINYINTDEFAULT0,statusTINYINTDEFAULT0,publish_timeDATETIME,create_timeDATETIME,update_timeDATETIME);私信表 (t_message)CREATETABLEt_message(idBIGINTPRIMARYKEYAUTO_INCREMENT,from_user_idBIGINTNOTNULL,to_user_idBIGINTNOTNULL,contentVARCHAR(1000)NOTNULL,is_readTINYINTDEFAULT0,create_timeDATETIME);3.4 接口设计系统采用 RESTful API 设计风格接口方法说明/api/auth/loginPOST用户登录/api/auth/registerPOST用户注册/api/articlesGET获取文章列表/api/articles/{id}GET获取文章详情/api/articlesPOST创建文章/api/articles/{id}PUT更新文章/api/articles/{id}/likePOST点赞文章/api/commentsGET获取评论列表/api/commentsPOST发表评论/api/message/sendPOST发送私信/api/message/conversationsGET获取会话列表第四章 系统实现4.1 后端核心实现4.1.1 项目结构backend/ ├── src/main/java/com/example/blog/ │ ├── config/ # 配置类 │ │ ├── WebConfig.java │ │ ├── SecurityConfig.java │ │ └── UserContext.java │ ├── controller/ # 控制器 │ │ ├── portal/ # 前台接口 │ │ └── admin/ # 管理后台接口 │ ├── service/ # 服务层 │ │ └── impl/ # 服务实现 │ ├── mapper/ # 数据访问层 │ ├── entity/ # 实体类 │ │ ├── po/ # 持久化对象 │ │ ├── vo/ # 视图对象 │ │ └── dto/ # 数据传输对象 │ └── util/ # 工具类 └── src/main/resources/ ├── application.yml # 配置文件 └── mapper/ # MyBatis 映射文件4.1.2 身份认证实现系统使用 JWT 进行身份认证// JWT 工具类核心代码publicclassJwtUtils{publicstaticStringgenerateToken(LonguserId,Stringusername){returnJwts.builder().setSubject(username).claim(userId,userId).setIssuedAt(newDate()).setExpiration(newDate(System.currentTimeMillis()EXPIRE)).signWith(SignatureAlgorithm.HS512,SECRET).compact();}publicstaticClaimsparseToken(Stringtoken){returnJwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody();}}4.1.3 私信系统实现// 私信服务核心实现OverridepublicPageMessagegetConversationMessages(LonguserId,LongotherId,IntegerpageNum,IntegerpageSize){LambdaQueryWrapperMessagewrappernewLambdaQueryWrapper();// 查询两人之间的所有消息wrapper.nested(i-i.eq(Message::getFromUserId,userId).eq(Message::getToUserId,otherId)).or().nested(i-i.eq(Message::getFromUserId,otherId).eq(Message::getToUserId,userId)).orderByDesc(Message::getCreateTime);returnmessageMapper.selectPage(newPage(pageNum,pageSize),wrapper);}4.2 前端核心实现4.2.1 项目结构frontend/ ├── public/ # 静态资源 ├── src/ │ ├── api/ # API 接口 │ ├── assets/ # 资源文件 │ ├── components/ # 公共组件 │ ├── router/ # 路由配置 │ ├── store/ # Vuex 状态管理 │ ├── utils/ # 工具函数 │ └── views/ # 页面组件 │ ├── portal/ # 前台页面 │ │ ├── Layout.vue │ │ ├── Home.vue │ │ ├── Login.vue │ │ ├── ArticleDetail.vue │ │ └── Personal.vue │ └── admin/ # 管理后台页面 │ ├── Layout.vue │ ├── Dashboard.vue │ └── ... └── package.json4.2.2 状态管理实现// Vuex 用户模块exportdefault{namespaced:true,state:{token:Cookies.get(token)||,userInfo:JSON.parse(localStorage.getItem(userInfo)||{})},mutations:{SET_TOKEN(state,token){state.tokentoken Cookies.set(token,token)},SET_USER_INFO(state,info){state.userInfoinfo localStorage.setItem(userInfo,JSON.stringify(info))}},actions:{asynclogin({commit},loginForm){constresawaitloginApi(loginForm)commit(SET_TOKEN,res.data.token)// 获取用户信息constuserResawaitgetUserInfoApi()commit(SET_USER_INFO,userRes.data)}}}4.2.3 Markdown 编辑器集成// Markdown 渲染importMarkdownItfrommarkdown-itconstmdnewMarkdownIt({html:true,linkify:true,typographer:true})exportfunctionrenderMarkdown(content){returnmd.render(content)}第五章 系统测试5.1 功能测试测试模块测试用例预期结果实际结果用户注册输入合法信息注册注册成功通过用户登录输入正确账号密码登录成功通过文章发布填写完整信息发布发布成功待审核通过文章浏览访问文章详情正确显示内容通过点赞功能点击点赞按钮点赞数1通过评论功能发表评论评论显示通过私信功能发送私信消息送达通过5.2 性能测试使用 JMeter 进行压力测试接口并发数平均响应时间TPS首页加载100120ms833文章列表10085ms1176文章详情10065ms1538用户登录100150ms667第六章 总结与展望6.1 总结本文设计并实现了一个功能完善的个人博客系统 E-Blog主要完成了以下工作系统架构设计采用前后端分离架构后端使用 Spring Boot前端使用 Vue.js核心功能实现实现了文章发布、编辑、分类管理、Markdown 支持等功能互动功能实现实现了点赞、收藏、评论、关注等社交功能私信系统实现实现了用户间的私信交流功能管理后台实现实现了数据分析、内容审核、用户管理等管理功能界面设计优化设计了美观的用户界面优化了用户体验致谢感谢所有开源项目的贡献者使本系统的开发成为可能。特别感谢 Spring Boot、Vue.js、Element UI 等开源社区提供的优秀框架和组件库。