MyBlog博客系统开源
项目介绍
爆肝将近两个星期,博客系统2.0终于面世,虽然第二版比第一版当初写的慢很多,但是第一版的后台基本借鉴了别人的实现,没写前端代码,而且经过我一段时间的使用,有很多问题存在,这也使我萌生了重写博客系统的念头,在开学的一个月里,我也在不断的构思新版博客的功能该如何实现,后台管理系统的技术选型是什么,开始我是想用layui
的,也挺简单,稍微学习了一段时间,后来放假了学长和我说为什么不用vue
。我之前也确实学过一点Vue然后我就选择了vue-element-admin
作为后台的技术选型,前台选用只要是的是Bootstrap
和Jquery
还有其他的一些库,前端之所以这样选择是因为博客前台的模板也就是主题原本是用的这些技术,我也不想换了。后端采用的是SpringBoot
,Thymelaef
做为服务端渲染引擎。
2.0版本的博客图床采用了我自己编写的ImgGO
(GitHub地址),可以实现客户端快捷键截图上传,分组存储,以及图片剪裁等功能,基本满足博客的使用需求,我选择自己写图床工具的主要原因是为了将来可能会发生的博客迁移工作做的准备,而且一个博客系统当然也用不到fastdfs
这种分布式文件服务器的强大功能,自己编写的简单图床足矣。
博客主要由日志模块,博文/分类管理模块,友链模块,图床模块以及个人信息修改几个模块组成,其中本博客所有与我相关的信息都是可以定制的,所以,基本上拿到我在Github发布的安装包,导入数据库sql文件,即可在你自己的服务器上把本博客系统跑起来(提供了start、stop的shell指令), 定制专属于你自己的博客,具体的操作流程请见Github 项目地址。
博客的前台使用的库基本使用CDN加速,而且图片也都是经过实际需求分辨率定制剪裁的,在阿里云的轻量应用服务器上部署经测试加载速度很快(之前版本没有CDN,图片大图,访问速度如龟速)。
至于我要开源的原因也很简单,我之所以能把博客第一版做出来也是借鉴了以为大佬几年前的开源博客系统,这在我的第一篇博文中也是有所介绍,大佬几年前的实现虽然有很多不足(他现在也已经不再使用),但是还是对当初博客系统该怎么起步都不知道的我给了很大的帮助。大佬的博客 - 我没有三颗心脏
B站介绍视频
后台展示
前台页面都是大家可以直接看到的,下面,我展示一下后台页面的构造。
1.首页
首页提供了今日访问统计和留言展示功能
2.日志浏览
其中日志分析功能尚未完成,原因有二:一是数据量不足,而是我也并没有想好应该吧怎么做这个功能,先留作一个悬念吧.
3.博文管理
3.1历史博文
历史博文页提供了按分类搜索博文,检索博文以及修改删除博文等几个功能
3.2新增博文
新增博文页,有markdown编辑功能(虽然我不太用的到,Typora不香吗),博客分类的选择可多选
3.3分类管理
分类管理和前台展示的技术栈信息放到了一起,主要是考虑到了两者功能的相似性以及拿出两个页面做这两个功能有点浪费,分类管理的图片不支持文件上传的功能,可使用图床工具客户端截图上传服务器后添加或者直接使用外部的连接添加,会通过后台下载图片并上传至图床,最后的图片链接也是位于图床的。
其中评论管理做得就比较水了,是最后用两个小时把前后端一起做了,页面也没有精心考虑,并且不支持楼中楼操作,因为肝了十几天有点累了就从简做了,后期可能会更新评论系统(其实我也不怎么觉得会有人来给我的博客评论)
优质外链主要是用来分享一些我认为写的比较好,对我有帮助的博文的功能,而且前台用户也可以给我提交自己写的不错的论文,如果我审核通过的话也会给申请者发送邮件提醒,其页面和友链管理套用,所以展示效果参考下面的友链管理
4.友链管理
友链管理有一个待审核列表,用来管理小伙伴们的友链申请,同样审核通过会有邮件提醒
5.图床管理
图床管理分为博文首页图片,文章题图,博客页头图片以及后台首页背景图四块,在后台管理系统的展示是按上传时间倒序分页展示的,在前台为从图库随机抽取图片展示,图片上传分为了链接上传以及文件上传两种方式,链接上传就是通过打开图片截图然后上传(需要自己保持图像比例),还有一种方式是通过选择图片文件直接在后台系统中截取对应分类比例的图片然后上传图床并根据实际需要缩放分辨率保持加载速度。(ps:本来文件上传的功能我是不想做的,主要是因为懒😁😁,但是后面我还是做了出来,花了我半天的时间,然后感觉就是,艾玛真香,真好用)
6.个人信息修改
本博客系统出了页面元素,所有和我本人有关的信息都是可以自己修改的,最基本的就是修改我提供的HTML里的文字信息,前端基础较好同学可以自定义自己的样式。
3.项目总结
本来我是想部分重写的,但是一写起来就发现,半年前的自己实在是太菜了,写的代码很难复用,而写注释不详细,所以本次的2.0版本我对代码注释,规约有了一定的要求,基本消除了IDE警告,绝大部分代码通过了阿里代码规约插件的扫描(只有两条一条是不能使用Execuetos创建线程池,不能使用魔数。我感觉我的博客系统根本就不会出现任务请求过度的情况,所以直接就用了Fixed线程池),但是代码规范仅限于后端,因为我是主学后端的,后端的代码相对可控,前端的代码很多地方就有点惨不忍睹了... 写博客的过程中也自己实现或者上网查找了一些工具类来使用,在整体的功能设计上的收获还是很大的,很多之前只是知道的概念可以拿来实战,理解程度也更加深刻。
还有就是之前一直觉得写sql好麻烦的,一直用的通用mapper
、MP
完成各种sql操作但是最近我发现使用原生的Mybatis
通过写sql语句的形式大大减少了代码的复杂程度,而且很多功能的确使用sql语句描述更加方便一点。像是一些简单的插入更新删除操作使用mapper等肯定是更加方便,复杂查询我现在还是更倾向于使用sql语句描述。
4.遇到的坑
在最终项目部署阶段,也就是前两天,我发现邮件服务的25端口被阿里云给禁用了,而且国内的服务器厂家基本都不支持25端口开放,后面也是通过多方资料查找最后使用了ssl
加密,使用465端口才最终完成的博客的部署工作。
评论
欢迎大佬们的宝贵意见。
为什么没有表情..(。•ˇ‸ˇ•。)…
添加一条评论