基于 Springboot + Vue 开发的前后端分离博客
在线地址 | 目录结构 | 项目特点 | 运行环境 | 开发环境 | 快速开始 | 注意事项 | 更新日志 | 鸣谢
项目链接: https://www.suntaoblog.com
后台链接: https://admin.suntaoblog.com
测试账号:test,密码:123456,可登入后台查看。
Github地址(后端): https://github.com/stazxr/zblog
Github地址(前台): https://github.com/stazxr/zblog-web-portal
Github地址(后台): https://github.com/stazxr/zblog-web-admin
您的 star 是我坚持的动力,感谢大家的支持,欢迎提交 pr 共同改进项目。
前端项目
zblog-web-portal:前台
zblog-web-admin:后台
后端项目
zblog:后端
数据库
SQL 文件位于后端项目的 doc 目录下,需要 MYSQL5.7 版本。
base.sql(基础表):由 user、role、permission、router、interface、dict、log、file、version、server_node 及一些中间表和临时表组成
service.sql(业务表):由 article、article_category、article_tag、article_column、friend_link、website_config、visitor、talk、page、 album、message、comment 及一些中间表和临时表组成。
xxljob.sql(任务表):由 xxljob 自身的表和部分自定义的表组成。
ps:安装 MYSQL 后,请先执行 base.sql,然后在执行 service.sql。
后端目录结构及功能介绍
后端目录是按模块划分的,总体分为:util、core、base、service(业务)、log(扩展)、xxljob(扩展)、notify(扩展) 模块
zblog
├── doc -- 简单的笔记
├── sql -- 数据库初始化脚本(5.7)
├── zblog-base -- ZBLOG 框架的基础功能组件
├────── component -- 三方组件封装
├────────── captcha -- 验证码封装(基于 EasyCaptcha),支持算术、中文、数字等类型
├────────── email -- 邮箱封装,支持发送普通文本邮件、HTML邮件、带图片的邮件、带附件的邮件
├────────── file -- 文件上传组件,支持本地、阿里云、七牛云上传
├────────── id -- 全局 ID 生成器,支持单机、多机部署两种模式
├────────── router -- 路由管理器,实现系统接口扫描和加载功能
├────────── security -- 安全配置,实现基于 nimbus-jose-jwt 的授权、认证、续签方案
├────────── webssh -- WebSocket 支持,主要用于实现 Webssh 终端
├────── controller -- 控制层,包含用户管理、角色管理、权限管理、路由管理、字典管理、操作日志、接口日志、数据监控、服务监控、版本维护、存储管理、节点管理等模块
├────── converter -- 对象转换器(基于 mapstruct),支持 Vo、Dto、Entity 之间的转换
├────── domain -- 领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper -- 数据层
├────── runner -- 执行器,用于系统启动后执行一些操作,如初始化路由,初始化验证码、初始化黑白名单等
├────── service -- 业务层
├────── util -- Base 组件使用的工具类和常量类,eg:GenerateIdUtils
├── zblog-core -- ZBLOG 框架的核心组件
├────── annotation -- 自定义注解
├────── base -- 基础类,BaseEntity、BaseDto、BaseVo、BaseMapper、BaseConverter 等
├────── cache -- 自定义系统缓存,支持 Memory 和 Redis 两种模式
├────── config -- 配置中心,缓存、线程、WebMvc、MybatisPlus、统一返回
├────── enums -- 自定义枚举,ResultCode
├────── exception -- 自定义异常,全局异常处理
├────── handler -- 处理器,实现 mybatis-plus 的字段自动填充
├────── model -- 模型对象,Result,ErrorMeta
├────── util -- Core 组件使用的工具类扩展
├── zblog-jexl -- ZBLOG 框架的表达式引擎组件,依赖 org.apache.commons commons-jexl3 组件
├────── ExpressionUtils.java -- 对 JEXL3 进行二次封装,核心工具类
├────── function -- 自定义函数扩展
├── zblog-log -- ZBLOG 框架的日志组件,提供切面日志等功能,可以通过 @EnableLog 注解来开启日志功能
├────── annotation -- 日志相关注解,包含 @EnableLog(是否开启全局注解),@IgnoredLog(不记录日志),@Log(操作日志) 注解
├────── aop -- 日志切面的实现
├────── domain -- 领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper -- 数据层
├────── service -- 业务层
├── zblog-notify -- ZBLOG 框架的消息组件(待实现)
├── zblog-service -- ZBLOG 框架的业务组件,主要是 ZBLOG 的业务功能(发博文、发说说、留言等)
├────── controller -- 控制层,包含文章相关模块,网站管理相关模块等
├────── converter -- 对象转换器(基于 mapstruct),支持 Vo、Dto、Entity 之间的转换
├────── domain -- 领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper -- 数据层
├────── rabbitmq -- 消息队列,内置文章定时发布功能(需安装 RabbitMQ 环境)
├────── service -- 业务层
├────── strategy -- 策略模式,内置文章搜索策略(目前只支持 Mysql)
├────── util -- Core 组件使用的工具类和常量类
├────── ZblogApplocation -- 项目启动类,一切都从这里开始~
├── zblog-util -- ZBLOG 框架的工具组件,实现字符串、日期、加解密、正则、POI、IO、Assert、OSS、JSCH 等工具的的封装
├── zblog-xxljob -- ZBLOG 框架的任务组件(基于 XXLJOB)(待实现)
└── pom.xml -- pom.xml,版本中心
- 前台参考 Hexo 设计,美观简洁,响应式体验好
- 后台参考 ElAdmin 设计,侧边栏,历史标签,面包屑自动生成
- 前后端分离部署,技术较新颖。
- 基于 nimbus-jose-jwt 的授权、认证、续签方案
- 支持动态权限修改,采用RBAC模型,前端菜单、按钮和后台权限实时更新
- 统一返回结果、返回状态码,方便前台判断请求结果
- 切面日志,支持统计系统的接口日志和用户的操作日志
- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
- 采用 WangEditor 编辑器
- 参考某博客平台的文章发布样式,支持定时发布、文章审核、代码高亮、上传视频和附件等特性
- 支持发布说说、相册,随时分享趣事,记录生活的美好
- 留言采用弹幕墙组件,更加炫酷
- 整个项目可以做脚手架使用,service 模块除外,该模块包含整个博客的业务功能
- 代码严格遵循阿里巴巴开发规范,模块化开发,利于开发者学习
- 包含 jexl3、xxljob、RabbitMQ 等技术,方便开发者了解
服务器: 阿里云2核2G 宽带1Mbps CentOS8.2
CDN: 阿里云全站加速
对象存储: 阿里云OSS
数据库: 阿里云MySQL
缓存: 阿里云Redis
开发环境 | 版本 |
---|---|
JDK | 1.8 |
MySQL | 5.7 |
Redis | 6.1.3 |
RabbitMQ | 3.8.0 |
详见文章:本地环境搭建(待补充)
详见文章:项目配置指导(待补充)
详见文章:项目部署教程-服务器篇(待补充)
详见文章:项目部署教程-容器篇(待补充)
详见文章:阿里云CDN加速配置指导(待补充)
- 项目拉下来运行后,可到后台管理页面网站配置处修改博客相关信息
- 邮箱配置,第三方授权配置需要自己申请
- 项目默认采用本地文件上传模式,如果需要使用阿里云OSS,请自己申请,七牛云可以免费申请10G,可参考文章【七牛云OSS申请(待补充)】
不只是博客,更希望大家能通过它学习了解到更多的技能!
-
感谢 PanJiaChen 大佬提供的前端模板(后台)
-
感谢 风丶宇 大佬提供的前端模板(前台),仓库已下线