基于 Vue3 + Node.js + MongoDB 的卢克教育在线教育系统项目01
项目概述
项目名称 : 卢克教育在线教育平台
项目类型: 全栈Web应用
项目截图
首页

课程页

课程详情页

直播

直播详情页

考试页

考试详情页

数据分析页

课程管理页

课程管理详情页

我的学习页

核心功能模块
🎯 用户系统
- 多角色权限管理: 学生、讲师、管理员
- JWT身份认证: 安全的用户登录和会话管理
- 个人中心: 学习档案、课程管理、数据统计
📚 课程系统
- 课程CRUD: 创建、编辑、发布课程
- 多媒体支持: 视频、文档、音频内容
- 学习进度跟踪: 实时记录学习状态
- 章节管理: 结构化课程内容组织
🎥 直播教学
- 实时直播: NGINX-RTMP + HLS协议
- 互动聊天: WebSocket实时通信
- 录播回放: 直播内容自动录制
📝 考试系统
- 在线考试: 多种题型支持
- 自动评分: 智能批改和成绩统计
- 防作弊: 时间限制、题目随机化
💰 支付系统
- 课程购买: 支持多种支付方式
- 订单管理: 完整的交易流程
- 财务统计: 收入分析和报表
技术架构
🏗️ 整体架构
markdown
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Vue.js 前端 │◄──►│ Node.js API │◄──►│ MongoDB 数据 │
│ + TypeScript │ │ + Express │ │ + Redis 缓存 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
Vite构建工具 JWT认证 MongoDB聚合
Element Plus 中间件 索引优化
🎨 前端技术栈
- 核心框架: Vue 3 + TypeScript + Composition API
- 状态管理: Pinia (轻量级Vuex替代)
- 路由管理: Vue Router 4 (路由守卫、权限控制)
- UI组件库: Element Plus (成熟的企业级组件)
- 构建工具: Vite (快速开发和热更新)
- 网络请求: Axios (拦截器、错误处理)
- 视频播放: Video.js (自定义播放器控件)
⚙️ 后端技术栈
- 运行环境: Node.js 18+ + Express.js
- 开发语言: JavaScript (可扩展到TypeScript)
- 数据库: MongoDB + Mongoose ODM
- 缓存系统: Redis (会话、热点数据)
- 身份认证: JWT + bcrypt密码加密
- 文件上传: Multer + 云存储
- 实时通信: Socket.io (直播聊天)
🗃️ 数据库设计
核心数据模型
javascript
// 用户模型
User: {
username, email, password(加密),
role: ['student', 'teacher', 'admin'],
profile: { avatar, nickname, bio, phone }
}
// 课程模型
Course: {
title, description, instructor,
chapters: [{ title, lessons: [...] }],
price, coverImage, status,
enrollmentCount, rating
}
// 报名记录
Enrollment: {
userId, courseId, progress,
completedLessons, currentLesson,
enrolledAt
}
技术亮点与实现
🔥 技术难点解决
1. 视频流媒体处理
bash
# NGINX-RTMP配置
rtmp {
server {
listen 1935;
application live {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
- HLS协议: 实现自适应码率和跨平台兼容
- CDN集成: 提升全球用户访问速度
- 防盗链: URL签名和Token验证
2. 高并发性能优化
javascript
// Redis缓存策略
const getCourseList = async () => {
const cacheKey = 'courses:list:' + JSON.stringify(params)
let courses = await redis.get(cacheKey)
if (!courses) {
courses = await Course.find(query).limit(20)
await redis.setex(cacheKey, 300, JSON.stringify(courses))
}
return courses
}
- MongoDB索引优化: 课程查询、用户认证关键字段
- 分页查询: 大数据量课程列表优化
- 连接池管理: 数据库连接复用
3. 实时通信架构
javascript
// Socket.io事件处理
io.on('connection', (socket) => {
socket.on('join-stream', (streamId) => {
socket.join(`stream:${streamId}`)
})
socket.on('chat-message', (data) => {
io.to(`stream:${data.streamId}`).emit('new-message', data)
})
})
🛡️ 安全性保障
身份认证和授权
javascript
// JWT中间件
const authMiddleware = (req, res, next) => {
const token = req.header('Authorization')?.replace('Bearer ', '')
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET)
req.user = decoded
next()
} catch (error) {
res.status(401).json({ message: '未授权访问' })
}
}
// 角色权限控制
const authorize = (...roles) => {
return (req, res, next) => {
if (!roles.includes(req.user.role)) {
return res.status(403).json({ message: '权限不足' })
}
next()
}
}
数据安全
- 密码加密: bcrypt + salt
- SQL注入防护: Mongoose参数化查询
- XSS防护: 输入验证和输出转义
- CORS配置: 跨域请求安全控制
项目结构与代码组织
📁 前端目录结构
bash
frontend/
├── src/
│ ├── components/ # 可复用组件
│ │ ├── common/ # 基础组件
│ │ ├── course/ # 课程相关
│ │ └── livestream/ # 直播相关
│ ├── views/ # 页面组件
│ │ ├── auth/ # 登录注册
│ │ ├── course/ # 课程页面
│ │ └── user/ # 用户中心
│ ├── stores/ # Pinia状态管理
│ ├── api/ # API接口封装
│ ├── router/ # 路由配置
│ └── types/ # TypeScript类型
📁 后端目录结构
bash
backend/
├── src/
│ ├── controllers/ # 控制器层
│ ├── models/ # 数据模型
│ ├── routes/ # 路由定义
│ ├── middleware/ # 中间件
│ ├── utils/ # 工具函数
│ └── config/ # 配置文件
├── uploads/ # 文件上传
└── logs/ # 日志文件
开发流程与工程化
🔄 开发工作流
- 需求分析 → 用户故事拆解
- 数据库设计 → MongoDB Schema设计
- API设计 → RESTful接口规范
- 前端组件开发 → 可复用组件库
- 集成测试 → API联调和功能测试
- 性能优化 → 缓存策略和查询优化
📦 部署方案
yaml
# docker-compose.yml
version: '3.8'
services:
frontend:
build: ./frontend
ports: ["3000:3000"]
backend:
build: ./backend
ports: ["5000:5000"]
depends_on: [mongodb, redis]
mongodb:
image: mongo:6.0
volumes: ["./data:/data/db"]
redis:
image: redis:7-alpine
技术成果展示
📊 核心功能演示
- ✅ 用户系统: 注册/登录、权限管理、个人中心
- ✅ 课程管理: 讲师创建课程、学生购买学习
- ✅ 视频播放: 自定义播放器、进度记录
- ✅ 直播功能: RTMP推流、HLS播放、实时聊天
- ✅ 考试系统: 在线答题、自动评分
- ✅ 支付系统: 课程购买、订单管理
🎯 技术特色
- 类型安全: TypeScript全栈开发
- 响应式设计: 移动端适配
- 模块化架构: 高可维护性
- 性能优化: 缓存策略、懒加载
- 安全可靠: 完整的权限控制
项目价值与技术收获
💡 业务价值
- 教育场景覆盖: 录播课程 + 直播教学 + 在线考试
- 用户体验优化: 流畅的视频播放、实时互动
- 商业模式支撑: 完整的付费课程体系
🚀 技术能力体现
- 全栈开发能力: Vue3 + Node.js完整技术栈
- 架构设计思维: 分层架构、模块化设计
- 性能优化经验: 缓存、数据库索引、CDN
- 工程化实践: Docker部署、Git工作流
这个项目展现了从0到1构建现代化Web应用的完整过程,涵盖了前后端开发、数据库设计、性能优化、安全防护等多个技术领域的实践经验。