Rust博客实战 | 详细功能清单及开发计划(deepseek生成版)
其实使用Rust进行实战开发,我已经完成了基本的核心功能,就是现在我的个人博客网站当前的版本:
后端使用了Rust+sqlx+actix等插件进行后台代码开发
后台管理界面则是使用了Ruoyi的Vue3 版本
博客开发页面使用的html+css+JavaScript做展示
自己写了一个将工具类,使用模板将markdown格式的博文转为静态的html页面
至于为什么这么折腾就像我在完成Rust版本博客部署后,发布的第一篇文章《关于本站第一篇文章》说的那样,一方面是因为原来使用halo部署的博客,在进行升级后,总是莫名其妙的程序挂掉,难以忍受是不是就需要重启,一方面是因为自学了Rust,但是工作上基本用不到,因此有了自己开发一个博客系统,自己练手。
2025年10月国庆期间,闲着无聊,并且应为第一版的样式自己也不忍直视了,碰巧在研究豆包AI助手,就用它生成了现在看到的样式。现在又抽出时间来了,准备重新系统地规划,把整个博客系统进行再次重构,功能细分、增加后续升级扩展的便捷性,因为不可能每次开发新的功能还需要动刀以前写好的功能的代码。另外我也想在完善后把它进行开源,实现自己开源项目零突破。
详细功能清单
将功能分为四个核心模块,遵循 MVP(最小可行产品)到功能完善的演进路线。
一、 详细功能清单
我们将功能分为四个核心模块,遵循 MVP(最小可行产品)到功能完善的演进路线。
阶段一:核心 MVP (v0.1.0) - 基础内容管理
这个阶段的目标是打造一个“能用的博客”,具备最核心的写作和展示功能。
后端 (
rhai-server)认证与授权:
用户注册/登录 (JWT Token)
密码加密 (使用
argon2库)
内容管理:
文章(Post)的 CRUD (创建、读取、更新、删除)支持 Markdown 格式编写和存储
将 Markdown 渲染为 HTML (使用
pulldown-cmark库)文章状态管理(草稿、已发布)
数据持久化:
使用 SQLite (开发环境) / PostgreSQL (生产环境) 作为数据库
使用
sqlx库进行数据库操作
RESTful API:
GET /api/posts- 获取文章列表 (分页)GET /api/posts/{id}- 获取单篇文章POST /api/posts- 创建文章 (需认证)PUT /api/posts/{id}- 更新文章 (需认证)DELETE /api/posts/{id}- 删除文章 (需认证)POST /api/auth/login- 登录POST /api/auth/register- 注册
前端 (
rhai-admin) - 管理后台SPA (单页应用),建议使用
React+Vite+TypeScript或Yew(Rust WASM框架,可选)。登录页面
文章列表页面 (带分页和删除操作)
文章编辑/创建页面 (简单的 Markdown 编辑器,如
SimpleMDE或CodeMirror)仪表盘首页 (显示基本数据统计)
前端 (
rhai-theme) - 博客主题一个简单的、响应式的静态主题,用于公开访问博客。
首页:显示文章列表
文章详情页:渲染 Markdown 内容
使用模板引擎 (如
Tera或Askama) 在后端渲染 HTML,或者构建成纯静态站点(后续阶段)。
阶段二:基础完善 (v0.2.0 - v0.5.0) - 增强内容与社区
在 MVP 基础上,增加博客的必备功能和社区互动元素。
内容扩展:
分类与标签: 为文章添加分类和标签系统。
独立页面: 创建“关于”、“友链”等独立页面。
媒体库: 支持图片上传、管理和预览,提供简单的 API。
定时发布: 支持为文章设置未来的发布时间。
评论系统:
读者可以对文章发表评论。
支持评论树形结构(楼中楼)。
后台评论审核(通过/驳回/删除)。
防垃圾评论基础逻辑。
管理与配置:
系统设置: 通过后台配置博客名称、描述、Logo 等。
用户管理: 多用户支持与角色权限控制(管理员、编辑)。
数据备份与恢复: 导出/导入 JSON 或 SQL 格式的数据。
SEO 优化:
自动生成
sitemap.xml和robots.txt。为每篇文章和页面生成唯一的
<title>和<meta description>。
阶段三:高级特性 (v1.0.0+) - 可扩展性与现代化
向 Halo 看齐,打造一个真正强大和可扩展的系统。
插件系统:
设计一个安全的、基于 WebAssembly 的插件运行时。
定义标准的插件接口,允许插件扩展 API、添加后台菜单等。
这是最具挑战性但也是区分度最高的功能。
主题系统:
完善的主题管理和热切换机制。
定义主题的配置文件和挂载点,使主题更灵活。
API 扩展:
完善并标准化所有 RESTful API。
考虑提供 GraphQL API 作为可选功能。
部署优化:
提供官方的 Docker 镜像。
支持更多的数据库和存储后端(如 MySQL, Redis 用于缓存)。
二、 可执行技术栈与执行列表
技术栈选择
Web 框架:
Axum(高性能、符合 Ergonomic 设计)数据库 ORM/工具:
sqlx(编译时检查 SQL, 支持异步)认证:
JWT, 使用jsonwebtoken库Markdown 渲染:
pulldown-cmark模板引擎 (SSR):
Tera(类似 Jinja2)配置管理:
config库日志:
tracing命令行解析:
clap(用于创建管理命令行工具)
执行列表(以阶段一为例)
第一步:项目初始化 (1-2 天)
使用
cargo new rhai-server和cargo new rhai-cli(用于管理命令) 创建项目。配置
Cargo.toml, 添加上述依赖。设置项目目录结构, 遵循清晰的模块化原则,例如:
text编写数据库迁移脚本(使用
sqlx-cli)。
第二步:实现数据模型与数据库层 (3-4 天)
在
db/model.rs中定义User和Post结构体。使用
sqlx编写数据库操作函数:create_user,get_user_by_username,create_post,get_published_posts等。编写统一的数据库连接池管理代码。
第三步:实现核心业务逻辑与 API (4-5 天)
在
handler/auth.rs中实现login和register处理器。在
handler/post.rs中实现文章的 CRUD 处理器。在
router.rs中组装所有路由,并为需要认证的路由添加中间件。实现 JWT 中间件,用于保护 API。
第四步:构建管理后台前端 (5-7 天)
使用
npm create vite@latest rhai-admin搭建 React + TS 项目。安装 UI 库(如
Ant Design或Chakra UI)加速开发。创建页面:登录页、文章列表页、文章编辑页。
使用
axios或fetch调用后端 API。实现前端路由和基础状态管理。
第五步:构建博客主题 (2-3 天)
在后端使用
Tera模板创建两个模板:index.html和post.html。创建对应的 API 来渲染这些模板页面(例如
GET /和GET /posts/{slug})。编写 CSS, 确保主题是响应式的。
第六步:测试、集成与部署 (3-4 天)
为关键的后端函数编写单元测试。
手动测试整个流程:注册 -> 登录 -> 写文章 -> 发布 -> 前台查看。
编写
Dockerfile和docker-compose.yml, 将应用容器化。部署到一个测试服务器(如 VPS)上运行。
关键决策与建议
从简开始: 第一个版本绝对不要追求大而全。一个只能发布和查看 Markdown 文章的博客,本身就是完整的。
迭代开发: 严格按照阶段划分进行。完成一个阶段并稳定后,再进入下一个阶段。
利用 Rust 生态: Rust 的 Web 生态已经非常成熟,
axum+sqlx+tokio是一个黄金组合。安全性: Rust 本身是内存安全的,但你仍需注意业务逻辑安全:
使用
argon2这类抗 GPU 破解的算法哈希密码。对用户输入进行严格的验证和清理,防止 XSS(特别是在渲染 Markdown 时)。
使用
sqlx的查询功能来避免 SQL 注入。
开源: 从第一天起就将代码托管在 GitHub 上。这不仅能获得社区的反馈和帮助,也是项目影响力的重要来源。
这个路线图将宏大的目标分解为了可执行、可衡量的具体任务。按照这个计划,完全可以一步步地用 Rust 打造出一个功能强大、性能卓越的现代化博客系统。