| sidebar_position | 5 |
|---|---|
| title | ReactPress 2.0 架构 |
:::info 历史文档
ReactPress 3.0 已改为单包入口 @fecommunity/reactpress,内置 API。新用户请阅读 ReactPress 3.0 平台版;从 2.x 升级见 迁移指南。
:::
ReactPress 2.0 采用了现代化的架构设计,基于 monorepo 结构将项目分解为三个独立但相互协作的核心包。这种设计提供了更好的可维护性、可扩展性和部署灵活性。
ReactPress 2.0 的架构由以下三个核心组件组成:
- @fecommunity/reactpress-client - 基于 Next.js 14 的前端客户端
- @fecommunity/reactpress-server - 基于 NestJS 10 的后端 API 服务
- @fecommunity/reactpress-toolkit - TypeScript API 客户端工具包
ReactPress 2.0 Architecture
┌─────────────────────────────────────────────────────────────┐
│ Client (Next.js 14) │
├─────────────────────────────────────────────────────────────┤
│ Toolkit (TypeScript) │
├─────────────────────────────────────────────────────────────┤
│ Server (NestJS 10) │
└─────────────────────────────────────────────────────────────┘
基于 Next.js 14 构建的现代化前端应用,提供:
- App Router 架构,支持服务器组件
- 响应式设计,适配移动端
- 国际化支持(中英文)
- 主题系统(亮色/暗色模式)
- Markdown 编辑器
- PWA 支持
基于 NestJS 10 构建的后端 API 服务,提供:
- RESTful API 接口
- 用户认证和权限管理
- 内容管理(文章、页面、分类、标签等)
- 媒体文件管理
- 评论系统
- 数据库集成(MySQL/PostgreSQL)
- 自动化 Swagger 文档生成
TypeScript API 客户端工具包,提供:
- 自动生成的 API 客户端
- 强类型的数据模型定义
- 实用工具函数
- HTTP 客户端封装
- 自动重试机制
- 请求/响应拦截器
ReactPress 2.0 支持多种部署模式:
同时部署客户端和服务器端,提供完整的 CMS 功能。
# 启动服务器
npx @fecommunity/reactpress-server --pm2
# 启动客户端
npx @fecommunity/reactpress-client --pm2可以独立部署任何一个包,适用于微服务架构。
# 仅部署服务器端作为 API 服务
npx @fecommunity/reactpress-server --pm2
# 仅部署客户端连接到远程 API
npx @fecommunity/reactpress-client --pm2仅部署服务器端,作为 headless CMS 使用。
# 仅部署服务器端
npx @fecommunity/reactpress-server --pm2# 克隆仓库
git clone https://github.com/fecommunity/reactpress.git
cd reactpress
# 安装依赖
pnpm install
# 启动开发服务器
pnpm run dev# 仅启动客户端开发服务器
pnpm run dev:client
# 仅启动服务器开发服务器
pnpm run dev:server通过 Toolkit 包提供的强类型定义,确保客户端和服务端的数据一致性。
服务器端自动生成 Swagger 文档,Toolkit 包基于此自动生成 API 客户端。
支持多种部署模式,适应不同的使用场景。
monorepo 结构便于代码共享和版本管理。
各包独立优化,提供最佳性能体验。
使用环境变量配置不同环境的参数:
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=reactpress
DB_PASSWD=reactpress
DB_DATABASE=reactpress
# 客户端配置
CLIENT_URL=http://localhost:3001
SERVER_API_URL=http://localhost:3002
# 安全配置
JWT_SECRET=your-jwt-secret使用 Toolkit 提供的错误处理机制:
import { api, utils } from '@fecommunity/reactpress-toolkit';
try {
const articles = await api.article.findAll();
} catch (error) {
if (utils.ApiError.isInstance(error)) {
// 处理 API 错误
console.error(`API Error: ${error.message}`);
}
}使用 Toolkit 的认证功能:
import { api } from '@fecommunity/reactpress-toolkit';
// 用户登录
const loginResponse = await api.auth.login({
username: 'user@example.com',
password: 'password'
});
// 使用访问令牌
api.setAuthToken(loginResponse.data.accessToken);ReactPress 2.0 的架构设计旨在提供现代化、高性能和易于维护的内容管理系统,满足从个人博客到企业级应用的各种需求。