Giter Site home page Giter Site logo

x1192176811 / blog Goto Github PK

View Code? Open in Web Editor NEW
2.4K 18.0 581.0 373 KB

基于SpringBoot + Vue 开发的前后端分离博客,采用SpringSecurity进行权限管理,ElasticSearch全文搜索,支持QQ、微博第三方登录、在线聊天、发布说说等功能。

Home Page: https://www.talkxj.com

License: Apache License 2.0

Java 44.44% JavaScript 9.17% HTML 0.18% Vue 40.80% CSS 5.41%
vue springboot blog rabbitmq redis elasticsearch mysql

blog's Introduction

博客介绍

风丶宇的个人博客

基于Springboot + Vue 开发的前后端分离博客

在线地址 | 目录结构 | 项目特点 | 技术介绍 | 运行环境 | 开发环境 | 项目截图 | 快速开始 | 注意事项 | 项目总结 | 交流群

在线地址

项目链接: www.talkxj.com

后台链接: admin.talkxj.com

测试账号:[email protected],密码:1234567,可登入后台查看。

Github地址: https://github.com/X1192176811/blog

Gitee地址: https://gitee.com/feng_meiyu/blog

在线接口文档地址: https://www.talkxj.com/api/doc.html

您的star是我坚持的动力,感谢大家的支持,欢迎提交pr共同改进项目。

目录结构

前端项目位于blog-vue下,blog为前台,admin为后台。

后端项目位于blog-springboot下。

SQL文件位于根目录下的blog-mysql8.sql,需要MYSQL8以上版本。

可直接导入该项目于本地,修改后端配置文件中的数据库等连接信息,项目中使用到的关于阿里云功能和第三方授权登录等需要自行开通。

当你克隆项目到本地后可使用邮箱账号:[email protected],密码:1234567 进行登录,也可自行注册账号并将其修改为admin角色。

本地访问接口文档地址:http://127.0.0.1:8080/doc.html

ps:请先运行后端项目,再启动前端项目,前端项目配置由后端动态加载。

blog-springboot
├── annotation    --  自定义注解
├── aspect        --  aop模块
├── config        --  配置模块
├── constant      --  常量模块
├── consumer      --  MQ消费者模块
├── controller    --  控制器模块
├── dao           --  框架核心模块
├── dto           --  dto模块
├── enums         --  枚举模块
├── exception     --  自定义异常模块
├── handler       --  处理器模块(扩展Security过滤器,自定义Security提示信息等)
├── service       --  服务模块
├── strategy      --  策略模块(用于扩展第三方登录,搜索模式,上传文件模式等策略)
├── util          --  工具类模块
└── vo            --  vo模块

项目特点

  • 前台参考"Hexo"的"Butterfly"设计,美观简洁,响应式体验好。
  • 后台参考"element-admin"设计,侧边栏,历史标签,面包屑自动生成。
  • 采用Markdown编辑器,写法简单。
  • 评论支持表情输入回复等,样式参考Valine。
  • 添加音乐播放器,支持在线搜索歌曲。
  • 前后端分离部署,适应当前潮流。
  • 接入第三方登录,减少注册成本。
  • 支持发布说说,随时分享趣事。
  • 留言采用弹幕墙,更加炫酷。
  • 支持代码高亮和复制,图片预览,深色模式等功能,提升用户体验。
  • 搜索文章支持高亮分词,响应速度快。
  • 新增文章目录、推荐文章等功能,优化用户体验。
  • 新增在线聊天室,支持撤回、语音输入、统计未读数量等功能。
  • 新增aop注解实现日志管理。
  • 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。
  • 后台管理支持修改背景图片,博客配置等信息,操作简单,支持上传相册。
  • 代码支持多种搜索模式(Elasticsearch或MYSQL),支持多种上传模式(OSS或本地),可支持配置。
  • 代码遵循阿里巴巴开发规范,利于开发者学习。

技术介绍

前端: vue + vuex + vue-router + axios + vuetify + element + echarts

后端: SpringBoot + nginx + docker + SpringSecurity + Swagger2 + MyBatisPlus + Mysql + Redis + elasticsearch + RabbitMQ + MaxWell + Websocket

其他: 接入QQ,微博第三方登录,接入腾讯云人机验证、websocket

运行环境

服务器: 腾讯云2核4G CentOS7.6

CDN: 阿里云全站加速

对象存储: 阿里云OSS

这套搭配响应速度非常快,可以做到响应100ms以下。

最低配置: 1核2G服务器(关闭ElasticSearch)

开发环境

开发工具 说明
IDEA Java开发工具IDE
VSCode Vue开发工具IDE
Navicat MySQL远程连接工具
Another Redis Desktop Manager Redis远程连接工具
X-shell Linux远程连接工具
Xftp Linux文件上传工具
开发环境 版本
JDK 1.8
MySQL 8.0.20
Redis 6.0.5
Elasticsearch 7.9.2
RabbitMQ 3.8.5

项目截图

QQ截图20210320171133.png

QQ截图20210320235519 1.jpg

QQ截图20210320171338.png

QQ截图20210320171401.png

快速开始

项目环境安装

详见文章Docker安装运行环境

项目配置

详见文章项目配置教程

Docker部署项目

详见文章项目部署教程

注意事项

  • 项目拉下来运行后,可到后台管理页面网站配置处修改博客相关信息.
  • 邮箱配置,第三方授权配置需要自己申请。
  • ElasticSearch需要自己先创建索引,项目运行环境教程中有介绍。

项目总结

博客作为新手入门项目是十分不错的,项目所用的技术栈覆盖的也比较广,适合初学者学习。主要难点在于权限管理、第三方登录、websocket这块。做的不好的地方请大家见谅,有问题的或者有好的建议可以私聊联系我。

交流群

博客技术交流群聊二维码.png

blog's People

Contributors

x1192176811 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blog's Issues

存储建议

建议增加七牛云OSS存储,七牛每个月有免费的10G存储

项目中的并发问题的建议

项目中涉及到查询保存、保存更新等一些操作,存在一些并发的问题。修复后可能更加完善点,涉及到redis的多步操作换成lua脚本会更好点,例如 saveArticleLike。

文章访问量bug

访问量每刷新一次就增加了1,session.getAttribute(ARTICLE_SET)每次都是空的,建议更换方案

/**
     * 更新文章浏览量
     *
     * @param articleId 文章id
     */
    public void updateArticleViewsCount(Integer articleId) {
        // 判断是否第一次访问,增加浏览量
        Set<Integer> articleSet = (Set<Integer>) Optional.ofNullable(session.getAttribute(ARTICLE_SET)).orElse(new HashSet<>());
        if (!articleSet.contains(articleId)) {
            articleSet.add(articleId);
            session.setAttribute(ARTICLE_SET, articleSet);
            // 浏览量+1
            redisService.zIncr(ARTICLE_VIEWS_COUNT, articleId, 1D);
        }
    }

504 Gateway Time-out

The gateway did not receive a timely response from the upstream server or application.
老哥,你网关是不是挂了。

markdown渲染提议

是否可以考虑将markdown渲染转移到文章保存阶段, 把mavon编辑器渲染好的 html 文档,或者使用markdown-it渲染好的html文档保存到数据库中, 避免在博客前端渲染,

大佬们,紧急求救

有没有人碰到,部署成功之后,没有任何报错,前台可以正常使用,但后台网页只能显示登录,登录成功后其他页面都打不开,直接白屏
image

分类模块

删除分类时会显示分类下还有文章,但是文章已经是删除了的,删除文章只是删除状态,这就导致文章分类还会统计到文章数量,导致文章分类统计也是统计删除了的文章和没删除的文章的总数,分类也删除不了。

RedisTemplate序列化方式建议

RedisTemplate序列化方式可以改成Fastjson2,JackJson做对象序列化时会带上@Class属性,导致redis value没有必要的变大

当然对博客而言用起来差别不大,就是一个小建议而已

给博主提几个小问题

1、写博客时添加居中在博客页面展示里没有效果。
2、Home.vue组件,有大量数据绑定的数据基于blogInfo计算属性,而该计算属性取的是store里的blogInfo,而blogInfo数据又来自app.vue创建时的axios获取。加载Home组件时,偶尔会由于网络原因,有时页面加载完成后axios请求的blogInfo数据还未返回,并且store里的blogInfo未初始化,就会导致Home页面里的数组绑定出现报错,错误之一:[Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'websiteAuthor')"。
该问题只会在页面第一次加载时出现,清除缓存可重现问题。

样式设计的问题

希望博主可以在查看博客这块儿再优化一下,以树结构的方式显示每篇博文的标题

为什么动态菜单报这个错

Uncaught (in promise) Error: [vue-router] route config "component" for path: / cannot be a string id. Use an actual component instead.
image
image

如何让搜索引擎收录

请问如何让搜索引擎可以搜到博客内容,我之前部署过博客,现在搜到的还是之前博客的内容,使用这个系统之后就搜不到了

Markdown 前端无法渲染公式

在后台编写markdown格式博客时,插入的公式 能够被解析,但是保存成博客后就显示的是原始文字。此外,即使在后台程序上编写也不能解析公式中的换行符号 \

拍个马屁

牛逼,写的是真的好,就这前端给我一年都写不下来,为大佬的头发默哀两秒

md文章导入优化

image

这里取最后一个点比较好,因为导入的文章标题有”.“会导致文章名字断裂不全

小建议

希望可以增加文章描述,首页文章直接显示文章内容,感觉很乱,还有希望友链页面的名称、简介、头像可以自定义,头像显示52a36bafeb5a99d1c6a5aad4311e7e5e.jpg这种,感觉不太好

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.