Node.js 是什么
为什么选择 Node.js
发展史
应用场景
环境搭建
Hello World
REPL 环境
模块化初探
CommonJS / ES Module
fs 概述
读取文件
写入/追加
删除/目录
文件状态
path 概述
路径拼接/解析
文件名/扩展名
格式化/规范化
HTTP 服务器
请求与响应
GET/POST 参数
响应头/状态码
返回 HTML
URL 解析
url.format
查询字符串解析
序列化
EventEmitter
监听/触发/移除
参数传递
错误事件
可读/可写流
管道流 pipe
链式流
文件流应用
Buffer 创建/操作
字符串转换
哈希 (MD5/SHA)
加密与解密
npm init/install
package.json
语义化版本
npm scripts
常用命令
Express 是什么
Hello World
路由基础
路由参数/模块化
中间件概念
应用/路由级
错误处理
express.static
morgan / cors
Request 对象
Response 方法
JSON/HTML/文件
重定向/Cookie
EJS 安装/配置
变量/循环/条件
布局与局部模板
数据传递
multer 配置
单/多文件上传
大小/类型过滤
文件重命名
Cookie 机制
Session 机制
express-session
登录状态管理
mysql2 连接
CRUD 操作
参数化查询
连接池管理
Mongoose 连接
Schema / Model
CRUD 操作
数据验证
REST 风格
端点设计原则
HTTP 动词/状态码
API 版本 / Swagger
JWT 原理
jsonwebtoken
Token 刷新
角色权限控制
全局错误中间件
自定义错误类
winston 日志
日志分级/轮转
express-validator
XSS / CSRF 防护
HTTPS 配置
helmet 安全头
Jest 框架
异步/Mock 测试
集成测试
supertest
瓶颈分析
异步/缓存策略
compression
cluster 集群
WebSocket 协议
ws 模块
广播消息
Express 集成
项目背景/目标
功能模块划分
技术栈/数据库设计
目录结构
注册/登录 (JWT)
信息获取/更新
密码加密/重置
权限管理
CRUD 接口
文件上传/处理
数据关联/分页
搜索功能
dotenv / PM2
Nginx 反向代理
Docker 部署
CI/CD 流水线
架构复盘
常见问题/优化
功能扩展建议
学习资源推荐