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

TiphiaPress——Rust+React构建的个人博客框架

前言

作为一名计算机技术爱好者,拥有一个自己的博客是必不可缺的。在我使用过WordPress、Typecho、Hexo等主流的博客框架后,我想为什么不自己设计一款个人博客系统呢。设计思路主要围绕着灵活性、轻量化、安全性等几个方面。
轻量化要求内存占用低并且高效,让性能不那么好的服务器或者小主机也能很轻松的跑起来;安全性除了必要的日志、权限校验外还有内存安全;至于灵活性,用户最好能够切换各种样式主题,通过插件实现各种功能扩展,以及更好的支持第三方实现,同时还要方便用户能够低学习成本的添加他们,以及各个部分尽量解耦合方便不同模块各司其职。

项目演示

话不多说,先上默认主题预览图

默认主题还有个液态玻璃模式

文章页面也十分简洁

当然你也可以通过主题配置切换主题强调色

后台管理界面也是非常清爽

还有必不可少的插件扩展,支持可视化管理和配置

当然,博客主题也可自定义(配置项取决于主题作者设计,框架要求主题提供一个Panel来进行可视化管理)

默认主题目前支持这些配置:

  • 强调色。
  • 字体。
  • 每页文章数。
  • 热门文章。
  • 最新评论。
  • 页脚标签数量。
  • 置顶文章。
  • 自定义导航页面。
  • 页脚链接。
  • 又拍云页脚展示。
  • Liquid Glass 样式。
  • 自定义 CSS。

站点支持SEO配置以及Gravatar解析(众所周知Gravatar在境内支持并不太好,所以站点支持URL配置来使用镜像,如Cravatar)

至于垃圾评论过滤,则设置了Hook通过插件来支持。

演示站点CairBin’s Blog

关于更多细节以及开发可以参考文档
以及Github前端项目仓库 TiphiaPress/tiphia-frontend 和 Github后端项目仓库 TiphiaPress/tiphia

如果你喜欢这个项目欢迎给出Star,同时也欢迎来参与代码贡献。

技术选型

  • 持久化数据库:默认SQLite(具体看SeaORM支持,支持Redis缓存数据库限流)
  • ORM:SeaORM
  • 后端WebAPI框架:Axum
  • 前端:React
  • Docker/Compose:支持

项目设计

主要功能包括:

  • RESTful API,方便前后端分离。
  • 后台管理和博客前台可以分开部署。
  • 插件不只是“后端扩展”,也能有前端配置页和前台渲染能力。
  • 前端可以独立维护,不需要用户为了配置主题去改前端代码。
  • 后端更重视安全、日志、限流、权限和可测试性。
  • 迁移旧博客数据时,文章、分类、标签、评论、浏览量都尽量保留下来。

后端插件不是运行时动态加载的.so或脚本,而是 Rust crate,和主程序一起编译。这么做的缺点是不能像传统 CMS 那样在线上传插件立即运行;优点是依赖关系、类型检查和部署风险更可控。

TiphiaPress 从一开始就把 API 当成核心接口,而不是后台页面的附属品。比如文章、评论、分类、设置、插件配置、主题配置等都通过 API 管理。前端后台只是这些 API 的一个消费者。这带来一个好处:以后如果不喜欢当前后台,理论上可以重新写一个后台,只要 API 合约稳定即可。

前端不是简单的React集合,而是分三层:前端骨架 -> 主题 -> 插件 Hook
前端不是简单的 React 页面集合,而是分成三层:

前端骨架 -> 主题 -> 插件 Hook

更准确地说:

  • src/blog负责公开博客的数据加载、路由、SEO、评论提交等非视觉逻辑。
  • src/admin负责后台管理。
  • src/themes负责公开博客的视觉呈现。
  • src/plugins负责前端插件逻辑、配置面板和 Hook 渲染。
  • src/framework提供 Hook、i18n、插件注册等基础能力。

公开博客页面尽量由主题控制,而不是骨架偷偷写死样式和标签。骨架只负责把数据取回来,然后交给主题。主题作者可以在主题目录里提供一个ThemeConfigPanel.tsx,后台会直接渲染这个配置面板,与用户进行交互,用于保存/修改主题配置。

插件系统

插件分为后端插件和前端插件。

后端插件负责:

  • 自己的配置 schema。
  • 自己的路由。
  • 数据库迁移。
  • 后端 Hook。
  • 后端持久化。

前端插件负责:

  • 后台配置页面。
  • 前台 Hook 渲染。
  • head 副作用,例如加载 SDK。
  • i18n

总的来说就是后端为前端提供持久化、路由/API,前端负责渲染或者执行一些JS脚本。

目前为了方便使用,官方已经默认集成了一些插件:

  • 评论审计插件
  • 友情链接插件
  • 备案信息插件。
  • GeeTest 验证码插件
  • 代码高亮插件
  • Google Auth二步校验插件
  • 邮件推送插件

以友情链接插件为例,后端负责保存链接数据,并提供/api/v1/links;前端插件负责在sluglinks的页面下渲染友链卡片。主题只需要在合适位置放Hook。这种设计的好处是插件能力不局限在后端,也不需要直接改主题源码。

如果不喜欢,你可以在后端编译/前端打包的时候去掉他们,或者在管理页面禁用他们。当然你也可以把这些插件当作参考,实现你自己的插件。

从Typecho迁移

我实现了一个Typecho命令行迁移工具,目前支持迁移内容有:

  • 文章
  • 页面
  • 分类
  • 标签
  • 文章与分类标签关系
  • 评论
  • 浏览量

请注意,此工具不会迁移用户信息和插件配置。

你可以用以下命令来进行数据迁移

dry run不会写入数据:

cargo run-p tiphia-typecho-import--\--typecho-url"mysql://user:password@127.0.0.1:3306/typecho"\--typecho-prefix"typecho_"\--tiphia-url"sqlite://tiphia.db?mode=rwc"\--author-id1

确认输出无误后加上--execute

cargo run-p tiphia-typecho-import--\--typecho-url"mysql://user:password@127.0.0.1:3306/typecho"\--typecho-prefix"typecho_"\--tiphia-url"sqlite://tiphia.db?mode=rwc"\--author-id1\--execute

项目部署

如果你想使用此项目来构建个人博客的话可以参考:

  • 项目主页tiphiapress.github.com
  • 文档
  • 以及Github前端项目仓库 TiphiaPress/tiphia-frontend 和 Github后端项目仓库 TiphiaPress/tiphia
http://www.cnnetsun.cn/news/2621013.html

相关文章:

  • 别再只盯着FP32了!从AI炼丹到游戏渲染,聊聊FP16/FP8到底能帮你省多少显存
  • Cursor 与 Claude Code 深度对比
  • 联想拯救者Y7000系列BIOS解锁工具:一键修改Insyde BIOS隐藏选项的终极指南
  • Arduino自动门禁系统实战:从矩阵键盘到伺服电机的嵌入式开发入门
  • 【Claude技术选型黄金法则】:20年AI架构师亲授5大避坑维度与3类场景精准匹配指南
  • 对比直接使用官方API利用Taotoken聚合平台如何节省开发与运维成本
  • PUBG罗技鼠标宏压枪系统深度解析与实战优化指南
  • 从零构建可持续运营的私有AI云:Ollama+Open WebUI实战指南
  • 别再只盯着CNN了!用PyTorch Geometric实战图神经网络(GNN)做交通流量预测
  • 阿里巴巴百亿级系统架构设计实录2026版开源!
  • 研究生的第一篇小论文都是怎么发的呀?
  • 观察Taotoken模型广场上新模型首发更新的速度与价格
  • Java程序员必看:AI Agent正吞噬CRUD,收藏这份未来迁移指南!
  • Windows平台ADB Fastboot驱动自动化安装工具完全指南
  • 基于4G LTE与MQTT的物联网数据上传实战指南
  • 如何用开源方案解决Windows 11兼容性问题并个性化你的桌面
  • Fallback 是什么?一个无处不在的“兜底“概念
  • 深度解析LOIC:开源网络压力测试工具的技术架构与实战应用
  • 09 GPT-2 论文精读:语言模型如何走向 Zero-shot?
  • 从滤波器设计到AI图像处理:卷积性质在实际项目中的妙用与避坑指南
  • OpenVoiceV2深度解析:三大核心技术如何重塑语音克隆体验
  • 大模型基础概念速览:收藏这份小白入门指南,轻松掌握AI核心知识!
  • 5分钟极简瘦身:用Win11Debloat让Windows系统重获新生
  • ESP32物联网开发实战:基于Xedge32与Lua的MQTT客户端快速实现
  • harness 与 hermes-agent 扩展性、安全与运维
  • 如何免费解锁Wand专业版功能:完整开源工具使用指南
  • KeymouseGo:免费开源鼠标键盘录制工具终极指南
  • 实力认证!无细胞合成试剂盒助力腾讯AI Lab在Nature Communications发文
  • WebPlotDigitizer终极指南:如何从任何图表中提取精准数据的免费开源工具
  • G-Helper完整指南:免费轻量级华硕笔记本性能控制神器