本项目是一个基于React+Node.js的博客社交平台,支持用户注册登录、发布博客、评论、点赞收藏、关注用户以及私信聊天等功能。
- 用户认证系统(注册、登录、密码修改)
- 博客管理(创建、编辑、删除、查看)
- 互动功能(点赞、收藏、评论)
- 社交功能(关注用户、私信聊天)
- 文件上传下载(支持图片和其他文件)
- 响应式设计(适配移动端和桌面端)
AI编程,全程没有自己敲代码,只是提供创作思路,自动编程,耗时12小时:
我将从整体架构、核心功能实现和技术亮点三个方面,简单介绍项目的实现方式。### 项目实现简介
#### 1. 整体架构
项目采用**前后端分离**架构,通过RESTful API进行通信:
- **前端**:React 19 + TypeScript 5.9 + Vite 7,使用组件化开发,路由管理采用React Router 7
- **后端**:Node.js 18 + Express 5 + MongoDB 7 + Mongoose 9,采用TypeScript开发,模块化设计
- **通信**:Axios处理HTTP请求,JWT实现身份认证
#### 2. 核心功能实现
##### 用户认证系统
- 登录注册:通过邮箱和密码验证,使用bcrypt进行密码加密
- JWT认证:登录成功生成token,存储在localStorage,axios请求拦截器自动添加Authorization头
- 认证中间件:`authMiddleware.ts`验证token有效性,保护需要认证的API
##### 博客功能
- 博客CRUD:Mongoose模型定义`Blog.ts`,支持标题、内容、图片上传
- 文件上传:Multer处理图片上传,存储在`uploads`目录
- 互动功能:点赞、收藏通过数组字段存储用户ID,评论采用嵌套或关联模型
##### 社交功能
- 关注系统:User模型中使用`following`和`followers`数组存储关注关系
- 私信聊天:
- `Conversation`模型存储对话信息
- `Message`模型存储消息内容,支持文字和文件
- 定时轮询获取最新消息(对话5秒/次,消息3秒/次)
##### 响应式设计
- CSS变量实现主题切换,支持亮色/暗色模式
- 媒体查询适配移动端,消息页面支持左右滑动切换对话列表
### 前端
- **框架**: React 19.x
- **语言**: TypeScript 5.9.x
- **构建工具**: Vite 7.x
- **路由**: React Router 7.x
- **HTTP客户端**: Axios
- **样式**: CSS变量(支持主题切换)
### 后端
- **运行环境**: Node.js 18.x
- **框架**: Express 5.x
- **数据库**: MongoDB 7.x
- **ORM**: Mongoose 9.x
- **认证**: JWT (JSON Web Token)
- **文件上传**: Multer
- **CORS**: cors middleware
- **语言**: TypeScript 5.9.x