系统架构
整体架构
Blog-Vue-Flask 采用前后端分离的架构设计,主要分为以下几个部分:
- 前端:Vue.js 单页面应用
- 后端:Flask RESTful API
- 数据库:MySQL
- 缓存:Redis
前端架构
前端采用 Vue.js 框架,主要特点:
- 组件化开发
- Vuex 状态管理
- Vue Router 路由管理
- Element UI 组件库
- Axios 网络请求
目录结构
frontend/
├── src/
│ ├── components/ # 组件
│ ├── views/ # 页面
│ ├── router/ # 路由配置
│ ├── store/ # Vuex状态管理
│ ├── api/ # API接口
│ └── assets/ # 静态资源
├── public/ # 公共资源
└── package.json # 项目配置
后端架构
后端采用 Flask 框架,主要特点:
- RESTful API 设计
- JWT 认证
- SQLAlchemy ORM
- Flask-Migrate 数据库迁移
- Flask-CORS 跨域支持
目录结构
backend/
├── app/
│ ├── models/ # 数据模型
│ ├── views/ # 视图函数
│ ├── schemas/ # 数据验证
│ ├── utils/ # 工具函数
│ └── extensions/ # 扩展
├── migrations/ # 数据库迁移
├── tests/ # 测试用例
└── config.py # 配置文件
数据库设计
主要数据表设计:
- users: 用户表
- posts: 文章表
- categories: 分类表
- tags: 标签表
- comments: 评论表
缓存设计
使用 Redis 实现缓存,主要缓存:
- 用户会话信息
- 热门文章
- 文章分类
- 标签云
部署架构
采用 Docker 容器化部署:
- Nginx 反向代理
- Gunicorn 应用服务器
- MySQL 数据库
- Redis 缓存
- Docker Compose 编排
安全设计
- JWT 认证
- 密码加密存储
- XSS 防护
- CSRF 防护
- 请求限流
- SQL注入防护