Rust博客实战 | 详细功能清单及开发计划(deepseek生成版)

dulucy | 2025-11-20 22:36:52 | Rust
Rust博客实战 |  详细功能清单及开发计划(deepseek生成版)

其实使用Rust进行实战开发,我已经完成了基本的核心功能,就是现在我的个人博客网站当前的版本:

  1. 后端使用了Rust+sqlx+actix等插件进行后台代码开发

  2. 后台管理界面则是使用了Ruoyi的Vue3 版本

  3. 博客开发页面使用的html+css+JavaScript做展示

  4. 自己写了一个将工具类,使用模板将markdown格式的博文转为静态的html页面

至于为什么这么折腾就像我在完成Rust版本博客部署后,发布的第一篇文章《关于本站第一篇文章》说的那样,一方面是因为原来使用halo部署的博客,在进行升级后,总是莫名其妙的程序挂掉,难以忍受是不是就需要重启,一方面是因为自学了Rust,但是工作上基本用不到,因此有了自己开发一个博客系统,自己练手。

2025年10月国庆期间,闲着无聊,并且应为第一版的样式自己也不忍直视了,碰巧在研究豆包AI助手,就用它生成了现在看到的样式。现在又抽出时间来了,准备重新系统地规划,把整个博客系统进行再次重构,功能细分、增加后续升级扩展的便捷性,因为不可能每次开发新的功能还需要动刀以前写好的功能的代码。另外我也想在完善后把它进行开源,实现自己开源项目零突破。


详细功能清单

将功能分为四个核心模块,遵循 MVP(最小可行产品)到功能完善的演进路线。

一、 详细功能清单

我们将功能分为四个核心模块,遵循 MVP(最小可行产品)到功能完善的演进路线。

阶段一:核心 MVP (v0.1.0) - 基础内容管理

这个阶段的目标是打造一个“能用的博客”,具备最核心的写作和展示功能。

  1. 后端 (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 - 注册

  2. 前端 (rhai-admin) - 管理后台

    • SPA (单页应用),建议使用 React + Vite + TypeScriptYew (Rust WASM框架,可选)。

    • 登录页面

    • 文章列表页面 (带分页和删除操作)

    • 文章编辑/创建页面 (简单的 Markdown 编辑器,如 SimpleMDECodeMirror)

    • 仪表盘首页 (显示基本数据统计)

  3. 前端 (rhai-theme) - 博客主题

    • 一个简单的、响应式的静态主题,用于公开访问博客。

    • 首页:显示文章列表

    • 文章详情页:渲染 Markdown 内容

    • 使用模板引擎 (如 TeraAskama) 在后端渲染 HTML,或者构建成纯静态站点(后续阶段)。

阶段二:基础完善 (v0.2.0 - v0.5.0) - 增强内容与社区

在 MVP 基础上,增加博客的必备功能和社区互动元素。

  1. 内容扩展

    • 分类与标签: 为文章添加分类和标签系统。

    • 独立页面: 创建“关于”、“友链”等独立页面。

    • 媒体库: 支持图片上传、管理和预览,提供简单的 API。

    • 定时发布: 支持为文章设置未来的发布时间。

  2. 评论系统

    • 读者可以对文章发表评论。

    • 支持评论树形结构(楼中楼)。

    • 后台评论审核(通过/驳回/删除)。

    • 防垃圾评论基础逻辑。

  3. 管理与配置

    • 系统设置: 通过后台配置博客名称、描述、Logo 等。

    • 用户管理: 多用户支持与角色权限控制(管理员、编辑)。

    • 数据备份与恢复: 导出/导入 JSON 或 SQL 格式的数据。

  4. SEO 优化

    • 自动生成 sitemap.xmlrobots.txt

    • 为每篇文章和页面生成唯一的 <title><meta description>

阶段三:高级特性 (v1.0.0+) - 可扩展性与现代化

向 Halo 看齐,打造一个真正强大和可扩展的系统。

  1. 插件系统

    • 设计一个安全的、基于 WebAssembly 的插件运行时。

    • 定义标准的插件接口,允许插件扩展 API、添加后台菜单等。

    • 这是最具挑战性但也是区分度最高的功能。

  2. 主题系统

    • 完善的主题管理和热切换机制。

    • 定义主题的配置文件和挂载点,使主题更灵活。

  3. API 扩展

    • 完善并标准化所有 RESTful API。

    • 考虑提供 GraphQL API 作为可选功能。

  4. 部署优化

    • 提供官方的 Docker 镜像。

    • 支持更多的数据库和存储后端(如 MySQL, Redis 用于缓存)。


二、 可执行技术栈与执行列表

技术栈选择

  • Web 框架: Axum (高性能、符合 Ergonomic 设计)

  • 数据库 ORM/工具: sqlx (编译时检查 SQL, 支持异步)

  • 认证JWT, 使用 jsonwebtoken

  • Markdown 渲染pulldown-cmark

  • 模板引擎 (SSR): Tera (类似 Jinja2)

  • 配置管理config

  • 日志tracing

  • 命令行解析clap (用于创建管理命令行工具)

执行列表(以阶段一为例)

第一步:项目初始化 (1-2 天)

  1. 使用 cargo new rhai-servercargo new rhai-cli (用于管理命令) 创建项目。

  2. 配置 Cargo.toml, 添加上述依赖。

  3. 设置项目目录结构, 遵循清晰的模块化原则,例如:
    text

    	src/
    	├── main.rs
    	├── error.rs      // 统一错误处理
    	├── config.rs     // 配置加载
    	├── db/
    	│   ├── mod.rs
    	│   └── model.rs  // 数据库模型 (Post, User)
    	├── handler/
    	│   ├── mod.rs
    	│   ├── auth.rs
    	│   └── post.rs
    	├── router.rs     // API 路由定义
    	└── auth.rs       // JWT 逻辑

  4. 编写数据库迁移脚本(使用 sqlx-cli)。

第二步:实现数据模型与数据库层 (3-4 天)

  1. db/model.rs 中定义 UserPost 结构体。

  2. 使用 sqlx 编写数据库操作函数: create_user, get_user_by_username, create_post, get_published_posts 等。

  3. 编写统一的数据库连接池管理代码。

第三步:实现核心业务逻辑与 API (4-5 天)

  1. handler/auth.rs 中实现 loginregister 处理器。

  2. handler/post.rs 中实现文章的 CRUD 处理器。

  3. router.rs 中组装所有路由,并为需要认证的路由添加中间件。

  4. 实现 JWT 中间件,用于保护 API。

第四步:构建管理后台前端 (5-7 天)

  1. 使用 npm create vite@latest rhai-admin 搭建 React + TS 项目。

  2. 安装 UI 库(如 Ant DesignChakra UI)加速开发。

  3. 创建页面:登录页、文章列表页、文章编辑页。

  4. 使用 axiosfetch 调用后端 API。

  5. 实现前端路由和基础状态管理。

第五步:构建博客主题 (2-3 天)

  1. 在后端使用 Tera 模板创建两个模板:index.htmlpost.html

  2. 创建对应的 API 来渲染这些模板页面(例如 GET /GET /posts/{slug})。

  3. 编写 CSS, 确保主题是响应式的。

第六步:测试、集成与部署 (3-4 天)

  1. 为关键的后端函数编写单元测试。

  2. 手动测试整个流程:注册 -> 登录 -> 写文章 -> 发布 -> 前台查看。

  3. 编写 Dockerfiledocker-compose.yml, 将应用容器化。

  4. 部署到一个测试服务器(如 VPS)上运行。


关键决策与建议

  1. 从简开始: 第一个版本绝对不要追求大而全。一个只能发布和查看 Markdown 文章的博客,本身就是完整的。

  2. 迭代开发: 严格按照阶段划分进行。完成一个阶段并稳定后,再进入下一个阶段。

  3. 利用 Rust 生态: Rust 的 Web 生态已经非常成熟,axum + sqlx + tokio 是一个黄金组合。

  4. 安全性: Rust 本身是内存安全的,但你仍需注意业务逻辑安全:

    • 使用 argon2 这类抗 GPU 破解的算法哈希密码。

    • 对用户输入进行严格的验证和清理,防止 XSS(特别是在渲染 Markdown 时)。

    • 使用 sqlx 的查询功能来避免 SQL 注入。

  5. 开源: 从第一天起就将代码托管在 GitHub 上。这不仅能获得社区的反馈和帮助,也是项目影响力的重要来源。

这个路线图将宏大的目标分解为了可执行、可衡量的具体任务。按照这个计划,完全可以一步步地用 Rust 打造出一个功能强大、性能卓越的现代化博客系统。

相关标签: rust sqlx 博客