当前位置: 首页 > news >正文

ReactPress(阮一峰推荐工具):一款基于Next.js的免费开源博客CMS系统

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。

ReactPress

此项目是用于构建博客网站的,包含前台展示、管理后台和后端。

此项目是基于 React + antd + NestJS + NextJS + MySQL 的,项目已经开源,项目地址在 github 上,喜欢的,欢迎给个 star 。
项目地址:https://github.com/fecommunity/reactpress

  • 前台&管理后台展示: https://github.com/fecommunity/reactpress/tree/master/client
  • 后端:https://github.com/fecommunity/reactpress/tree/master/server
  • 演示站点:https://blog.gaoredu.com/

ReactPress:功能全面的开源发布平台

近期,阮一峰在科技爱好者周刊中推荐了一款开源工具——ReactPress,它凭借其出色的性能和多样化的功能,吸引了众多开发者和内容创作者的目光。
ReactPress

在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。ReactPress作为一款融合了现代Web开发多项先进技术的开源发布平台,正以其卓越的性能、灵活性和可扩展性,赢得了广大开发者和内容创作者的青睐。那么,ReactPress究竟支持哪些功能呢?以下是对其功能的详细介绍:

1. 效果图

1.1 前台展示

pc 端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

移动端适配

在这里插入图片描述

管理后台

管理后台是在蚂蚁金服用户开源的 antd 5.0 基础上进行开发的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 体验地址

网站首页:https://blog.gaoredu.com/
管理后台:https://blog.gaoredu.com/admin

3. 计划

这次是一个完整的全栈式开发,只要部署了这个项目的代码,是完全可以搭建好博客网站的。

环境准备

$ git clone --depth=1 https://github.com/fecommnity/reactpress.git
$ cd reactpress
$ npm i -g pnpm
$ pnpm i

配置文件

项目启动后会加载根目录下的 .env 配置文件,请确保MySQL数据库服务和下面的配置保持一致,并提前创建好 reactpress 数据库

DB_HOST=127.0.0.1 // 数据库地址
DB_PORT=3306 // 端口
DB_USER=reactpress // 用户名
DB_PASSWD=reactpress // 密码
DB_DATABASE=reactpress // 数据库

环境准备好后,执行启动命令:

$ pnpm run dev

打开浏览器访问 http://127.0.0.1:3001

4. 收获与感触

学而不用,基本等于没学,因为最近一直在做自己的个人博客网站,所以好久没更新技术文章了;而且是利用业余时间做的,所以经过差不多两个月的搬砖,现在网站终于都上线了。
开发网站的这段时间里,每天晚上几乎都搬砖到接近 11 点,周末的时间大多也在搬砖,每天写完文章,也快 12 点了,搬砖不易啊,喜欢或者觉得不错的,欢迎到 github 上给个 star,谢谢。

5. 文档教程

  • 项目地址: https://github.com/fecommunity/reactpress
  • next.js 源码:https://github.com/vercel/next.js
  • nest.js 源码:https://github.com/nestjs/nest
一、高效的内容管理功能

ReactPress提供了丰富的工具和功能,以支持内容创作者和管理者高效地管理内容。具体包括:

  1. Markdown编辑器:支持文章的编写、分类和目录管理以及标签管理,使创作者能够轻松地编写和发布文章,同时也方便了文章的查找和归档。
  2. 评论管理:用户可以自由地添加、编辑和删除评论,也可以对评论进行审核和管理,确保内容的合规性和用户的互动体验。
  3. 媒体上传:支持本地文件上传和OSS(对象存储服务)文件上传功能,使用户能够轻松地上传图片、视频等多媒体资源,为文章增添丰富的视觉效果。
二、灵活的定制与扩展能力

ReactPress以其出色的可扩展性设计,为用户提供了丰富的定制选项和强大的扩展能力。

  1. 组件化设计:ReactPress的组件化开发模式使得开发者可以轻松地添加、修改或删除组件,以满足不断变化的需求。每个组件都是独立的、可复用的,这意味着开发者可以根据需要创建新的组件,或者对现有组件进行扩展和优化。
  2. 自定义主题和样式:ReactPress允许开发者自定义主题和样式,以满足不同用户的需求和审美偏好。开发者可以通过修改CSS样式表或使用React的样式解决方案(如Styled Components)来自定义ReactPress的外观和感觉。
  3. 插件和扩展支持:ReactPress支持多种插件和扩展的集成,这些插件和扩展可以为ReactPress增加新的功能,如社交媒体集成、电子商务功能等。开发者可以根据自己的需求选择合适的插件和扩展进行集成,从而快速扩展ReactPress的功能。
三、强大的前后端技术栈

ReactPress采用了先进的前后端技术栈,确保了系统的稳定性和高效性。

  1. 前端技术栈:以React为核心,采用了NextJS这一基于React的服务器端渲染(SSR)框架,进一步提升了页面的即时更新能力和SEO性能。同时,Ant Design这一企业级UI组件库的加入,为ReactPress的用户界面增添了美观与易用性。
  2. 后端技术栈:选择了NestJS作为框架,用于构建高效、可靠和可扩展的服务器端应用程序。NestJS提供的模块化、依赖注入、中间件等强大功能,使得后端开发更加有序和高效。MySQL这一高性能的关系型数据库管理系统,则负责存储ReactPress中的所有内容数据,其稳定性和可靠性保证了数据的一致性和安全性。
四、国际化与多语言支持

ReactPress支持中文和英文的切换,并具有国际配置管理能力。这意味着用户可以根据自己的需求选择使用哪种语言进行操作,从而提高了平台的易用性和可访问性。

五、移动端适配与优化

ReactPress完美适配移动端H5页面,使得用户在不同设备上都能获得良好的用户体验。

综上所述,ReactPress以其出色的技术方案设计和灵活的源码结构为用户和开发者提供了丰富的功能和易用的开发体验。无论是个人博客、企业官网还是其他类型的网站和应用,ReactPress都能提供全面的内容管理功能和灵活的定制与扩展能力。随着技术的不断进步和应用的深入拓展,ReactPress有望成为更多网站和应用的首选内容管理系统。

ReactPress 系列文章

ReactPress 是什么?:https://blog.csdn.net/m0_37981569/article/details/143495843
ReactPress—基于React的免费开源博客&CMS内容管理系统:https://blog.csdn.net/m0_37981569/article/details/143455403
ReactPress数据库表结构设计全面分析:https://blog.csdn.net/m0_37981569/article/details/143662572
ReactPress 安装指南:从 MySQL 安装到项目启动:https://blog.csdn.net/m0_37981569/article/details/143662086
ReactPress – An Open-Source Publishing Platform Built with React:https://blog.csdn.net/m0_37981569/article/details/143635836
ReactPress:构建高效、灵活、可扩展的开源发布平台:https://blog.csdn.net/m0_37981569/article/details/143635551
ReactPress技术揭秘:https://blog.csdn.net/m0_37981569/article/details/143634709
ReactPress:深入解析技术方案设计与源:https://blog.csdn.net/m0_37981569/article/details/143610300
ReactPress:重塑内容管理的未来:https://blog.csdn.net/m0_37981569/article/details/143610158
ReactPress系列—NestJS 服务端开发流程简介:https://blog.csdn.net/m0_37981569/article/details/143536219
ReactPress系列—Next.js 的动态路由使用介绍:https://blog.csdn.net/m0_37981569/article/details/143535847

相关文章:

ReactPress(阮一峰推荐工具):一款基于Next.js的免费开源博客CMS系统

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 此项目是用于构建博客网站的,包含前台展示、管理后台和后端。 此项目是基于 React antd NestJS NextJS MySQL 的,项目已经开源,项目地址在 …...

什么是缓存击穿?如何避免之布隆过滤器

缓存击穿(Cache Penetration)是分布式系统和缓存使用中的一个常见问题,布隆过滤器在解决缓存击穿问题时非常有用。接下来我会介绍缓存击穿的概念以及布隆过滤器在解决该问题中的应用。 什么是缓存击穿? 缓存击穿是指当大量的客户…...

React 第八节组件生命周期钩子-类式组件,函数式组件模拟生命周期用法

概述 React组件的生命周期可以分为三个主要阶段: 挂载阶段(Mounting):组件被创建,插入到DOM 树的过程; 更新阶段(Updating):是组件中 props 以及state 发生变化时&#…...

java虚拟机——如何排查jvm问题

在项目中排查JVM问题是一个系统性的过程,涉及到多个工具和方法。以下是一些常见的步骤和工具,可以帮助你有效地诊断和解决JVM相关的问题: 1. 监控和日志 日志分析 JVM日志:启用JVM的日志记录功能,查看垃圾收集日志、…...

Altium Designer PCB设计检查工具1

此工具最大的特点是不需要联网,完全使用本地的计算资源即可实现检查统计操作,可用于不能联网的应用场景中。此工具支持多种计算加速方法,支持调用CUDA显卡进行数据处理,此功能需要计算机安装Matlab 2016以上版本,并需要…...

统计词频

目标:统计词频 从文件1.txt ,读取内容,保存在一个字符串中统计字符串中,每个单词出现的频率对结果进行排序把最后的结果写入一个新的文件 import java.io.PrintWriter import scala.io.Source//知识点: //1.字符串&a…...

串,数组,广义表相关知识点

串 一.串的储存 1.基本概念 2.顺序储存 3.链式储存 二. 串的模式匹配算法 1.BF算法 将主串的第pos个字符和模式的第一个字符比较, 若相等,继续逐个比较后续字符; 若相等,继续逐个比较后续字符; 若不等&#xff0c…...

Leetcode 131 Palindrome Partition

题意 把一个字符串分割成多个回文字符串的partition,返回所有的可能partion 链接 https://leetcode.com/problems/palindrome-partitioning/description/ 思考 这只是dfs套了一个回文问题 题解 dfs每次截取一段字符串,判断是否是回文 退出条件是遍…...

git使用文档手册

创建一个本地代码工作空间,比如这里使用test目录作为工作目录 针对仓库地址 http://192.168.31.125:9557/poxiaoai-crm/project-crm.git。 1. 安装 Git 确保您的系统已经安装了 Git。如果未安装,请根据操作系统访问 Git 官网 下载并安装。 验证安装 …...

开发需求总结19-vue 根据后端返回一年的数据,过滤出符合条件数据

需求描述: 定义时间分界点:每月26号8点,过了26号8点则过滤出data数组中符合条件数据下个月的数据,否则过滤出当月数据 1.假如现在是2024年11月14日,那么过滤出data数组中日期都是2024-11月的数据; 2.假如…...

android 安全sdk相关

前述 在网上有看到许多android安全sdk相关的内容,有重复的也有比较新鲜的内容,这里做一个整体的合集,以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分(有一些部分可能会存在一些重合&#…...

ChemBench—— 探索大语言模型在化学领域的新基准框架是否胜过化学专家

概述 大规模语言模型是一种机器学习模型,通过学习大量文本来生成文本。这些模型的能力正在迅速提高,现在已经可以通过美国国家医学考试。它们还可以与网络搜索和合成规划器等工具结合使用,自主设计化学反应和进行实验。 一些人认为这些模型…...

[SWPUCTF 2021 新生赛]Do_you_know_http

访问告诉我们要用WLLM 浏览器模式访问 import requestsurl http://node7.anna.nssctf.cn:23148/hello.php # 替换为题目提供的URL headers {User-Agent: WLLM } response requests.get(url, headersheaders) print(response.text)import requestsurl http://node7.anna.n…...

Flink--API 之 Source 使用解析

目录 一、Flink Data Sources 分类概览 (一)预定义 Source (二)自定义 Source 二、代码实战演示 (一)预定义 Source 示例 基于本地集合 基于本地文件 基于网络套接字(socketTextStream&…...

vscode可以编译通过c++项目,但头文件有红色波浪线的问题

1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…...

CTF之密码学(培根密码)

培根密码,又名倍康尼密码(Bacons cipher),是由法兰西斯培根发明的一种隐写术,属于密码学领域的一种替换密码。以下是关于培根密码的详细介绍: 一、原理 培根密码本质上是一种二进制密码,但它没…...

摄像头原始数据读取——V4L2(mmap模式,V4L2_MEMORY_MMAP)

摄像头原始数据读取——V4L2(mmap模式,V4L2_MEMORY_MMAP) 内存映射模式,是将设备在内核态申请的用于存储视频数据的物理内存映射到用户空间,使得用户应用程序可以直接访问和操作设备数据物理内存,避免了数据的拷贝。因此采集速度较快&#x…...

Ubuntu20.04下安装Matlab2018

Ubuntu20.04下安装Matlab2018 首先需要下载三个文件 挂载第一个镜像文件 先进入到终端,在空白处点击在终端打开 然后输入以下两个命令: mkdir ~/matlab //用户主目录下新建文件夹 matlab sudo mount -o loop Matlab911R2021b_Lin64.iso ~/matlab //将…...

如何做好一份技术文档?

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于技术文档写作的相关内容! 关…...

GitHub上如何创建文件夹及上传文件

GitHub上如何创建文件夹_github如何添加文件夹-CSDN博客 然后在对应的文件夹下上传文件即可 可以一个一个添加或一次性拖进去,但一次不能超过100个文件。...

GESP C++等级考试 二级真题(2024年9月)

若需要在线模拟考试,可进入题库中心,在线备考,检验掌握程度: https://www.hixinao.com/tidan/exam-157.html?time1732669362&sid172&index1...

Web 表单开发全解析:从基础到高级掌握 HTML 表单设计

文章目录 前言一、什么是 Web 表单?二、表单元素详解总结前言 在现代 Web 开发中,表单 是用户与后端服务交互的重要桥梁。无论是用户登录、注册、搜索,还是提交反馈,表单都无处不在。在本文中,我们将从基础入手,全面解析表单的核心知识点,并通过示例带你轻松掌握表单开…...

SpringBoot生成顺序规则编号-查询数据库方式实现

先说编号规则: 前缀yyyyMMdd5位序号(00001,00002.......) 首先说说思路: 首先是查询数据库中编号的最大值是多少----->没有数据直接生成一个新的从00001开始----->存在编号就直接截取编号的后5位----->序号1 为了可以…...

【大数据学习 | Spark-Core】RDD的五大特性(包含宽窄依赖)

分析一下rdd的特性和执行流程 A list of partitions 存在一系列的分区列表A function for computing each split 每个rdd上面都存在compute方法进行计算A list of dependencies on other RDDs 每个rdd上面都存在一系列的依赖关系Optionally, a Partitioner for key-value RDDs…...

docker离线安装linux部分问题整理

0:离线安装docker过程命令 echo $PATH tar -zxvf docker-26.1.4.tgz chmod 755 -R docker cp docker/* /usr/bin/ root 权限 vim /etc/systemd/system/docker.service --------- [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.do…...

shell(5)字符串运算符和逻辑运算符

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...

容器和它的隔离机制

什么是容器和它的隔离机制? 容器 是一种轻量化的虚拟化技术,它允许多个应用程序共享同一个操作系统(OS)内核,同时为每个应用程序提供自己的运行环境。容器通过利用 Linux 的内核功能(如 Namespaces 和 Cgr…...

【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序

DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 1. 窗口的划分 1.1 窗口分为:基于时间的窗口 和 基于数量的窗口 基于时间的窗口:基于起始时间戳 和终止时间戳来决定窗口的大小 基于数量的窗口:根据固定的数量定义窗口 的大小 这…...

DVWA靶场通过——文件上传漏洞

File Upload漏洞 它允许攻击者通过上传恶意文件来执行任意代码、窃取数据、获取服务器权限,甚至完全控制服务器。为了防止文件上传漏洞,开发者需要对文件上传过程进行严格的验证和处理。 1. 文件上传漏洞概述 文件上传漏洞发生在Web应用程序允许用户通过…...

原子类、AtomicLong、AtomicReference、AtomicIntegerFieldUpdater、LongAdder

原子类 JDK提供的原子类,即Atomic*类有很多,大体可做如下分类: 形式类别举例Atomic*基本类型原子类AtomicInteger、AtomicLong、AtomicBooleanAtomic*Array数组类型原子类AtomicIntegerArray、AtomicLongArray、AtomicReferenceArrayAtomic…...

MySQL(8)【聚合函数 | group by分组查询】

阅读导航 引言一、聚合函数1. 简介2. 使用示例(1)COUNT() 函数(2)SUM() 函数(3)AVG() 函数(4)MAX() 函数(5)MIN() 函数 二、group by分组查询1. 基本语法2. 按…...

如何监控Elasticsearch集群状态?

大家好,我是锋哥。今天分享关于【如何监控Elasticsearch集群状态?】面试题。希望对大家有帮助; 如何监控Elasticsearch集群状态? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 监控 Elasticsearch 集群的状态对于确保…...

React第七节 组件三大属性之 refs 的用法注意事项

1、定义 React 中refs 是允许我们操作DOM 访问组件实例的一种方案。开发人员可以直接使用 refs 访问操作DOM,而不用自身的数据状态,这种方案在实际开发过程中是有必要的,但是不建议通篇使用refs操作DOM,如果是这样,那…...

全文单词统计

目标:统计词频 import scala.io.Source //知识点 //1.字符串.split("分隔符"):把字符串用指定的分隔符。拆分成多份,保存在数组中 object test1 {def main(args: Array[String]): Unit { //从文件1.txt中读入内容val contentSourc…...

Angular v19 (二):响应式当红实现signal的详细介绍:它擅长做什么、不能做什么?以及与vue、svelte、react等框架的响应式实现对比

本文紧接着Angular v19 新版本来啦,一起瞧瞧新特性吧!,主要针对它在v18引入了一项全新的响应式技术——Signal,这引起了开发者社区的广泛关注,最新的v19版本推出了更多的signal工具。Signal的加入旨在优化Angular的响应…...

【数据结构】二叉搜索树(二叉排序树)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、什么是二叉搜索树 二、二叉搜索树的实现 节点 属性和接口的声明 插入 查找 删除 拷贝构造 析构 中序遍历 三、二叉搜索树的…...

文件的摘要算法(md5、sm3、sha256、crc)

为了校验文件在传输中保证完整性和准确性,因此需要发送方先对源文件产生一个校验码,并将该值传输给接收方,将附件通过ftph或http方式传输后,由接收方使用相同的算法对接收文件再获取一个新的校验码,将该值和发送方传的…...

Python实现人生重开模拟器

目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏,我们这里使用 Python 实现一个简化版的 人生重开模…...

机器学习(二十五):决策树算法以及决策树和神经网络的对比

一、决策树集合 单一决策树会对训练数据的变化很敏感。例子:输入十个数据,判断是否是猫。只替换其中一个数据,信息增益最高的分裂特征就发生了改变,决策树就发生了变化。 使用决策树集合可以使算法更加健壮。例子:使用…...

k8s运行运行pod报错超出文件描述符表限制

1.问题描述 运行pod超过文件描述符表 unable to allocate file descriptor table - out of memory/opt/COMMAND.sh: line 9: 2.查看设备的文件描述符限制 操作前一定要先查询这个值,2097152这个值即为我们可设置的最大值,超过这个值后将无法登录&am…...

非常简单实用的前后端分离项目-仓库管理系统(Springboot+Vue)part 2

七、创建前端项目 你下载了nodejs吗?从cn官网下载:http://nodejs.cn/download/,或者从一个国外org网站下载,选择自己想要的版本https://nodejs.org/download/release/,双击下载好的安装文件,选择安装路径安…...

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序源码助力品牌共建:价值、策略与实践

摘要:在当今数字化商业环境下,品牌构建已演变为企业与消费者深度共建的过程。本文聚焦于“开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序源码”,探讨其如何融入品牌建设,通过剖析品牌价值构成,阐述该技术工具在助力…...

微信小程序中的WXSS与CSS的关系及使用技巧

微信小程序中的WXSS与CSS的关系及使用技巧 引言 在微信小程序的开发中,样式的设计与实现是构建用户友好界面的关键。微信小程序使用WXSS(WeiXin Style Sheets)作为其样式表语言,WXSS在语法上与CSS非常相似,但也有一些独特的特性。本文将深入探讨WXSS与CSS的关系,介绍WX…...

STM32的CAN波特率计算

公式: CAN波特率 APB总线频率 / (BRP分频器 1)/ (SWJ BS1 BS2) SWJ一般为1。 例如STM32F407的,CAN1和CAN2都在在APB1下,频率是42000000 如果想配置成1M波特率,则计算公式为:...

【LeetCode面试150】——57插入区间

博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...

活着就好20241128

早晨问候: 亲爱的朋友们,大家早上好!今天是2024年11月28日,第48周的第四天,也是十一月的第二十八天,农历甲辰[龙]年十月廿四。在这个即将步入月末、阳光依旧明媚的清晨,愿第一缕阳光轻轻洒落在…...

【kafka03】消息队列与微服务之Kafka 读写数据

Kafka 读写数据 参考文档 Apache Kafka 常见命令 kafka-topics.sh #消息的管理命令 kafka-console-producer.sh #生产者的模拟命令 kafka-console-consumer.sh #消费者的模拟命令 创建 Topic 创建topic名为 chen,partitions(分区)为3&#xff0…...

【Agorversev1.1数据转换】Agorverse高清地图转OpenStreetMap及SUMO路网

文章目录 Agorverse高清地图转OpenStreetMap及SUMO路网1. Agorverse osm转换说明2. 转换源码3. 处理效果4. SUMO-Carla联合仿真 Agorverse高清地图转OpenStreetMap及SUMO路网 1. Agorverse osm转换说明 根据作者的描述,其高清地图的osm文件与标准osm的区别在于以下…...

Vue 3 实现高性能拖拽指令的最佳实践

前言 在现代前端开发中,拖拽功能是增强用户体验的重要手段之一。本文将详细介绍如何在 Vue 3 中封装一个拖拽指令(v-draggable),并通过实战例子演示其实现过程。通过这篇教程,您将不仅掌握基础的拖拽功能,…...

AIGC--------AIGC在医疗健康领域的潜力

AIGC在医疗健康领域的潜力 引言 AIGC(Artificial Intelligence Generated Content,人工智能生成内容)是一种通过深度学习和自然语言处理(NLP)等技术生成内容的方式。近年来,AIGC在医疗健康领域展现出了极…...