后端到底在做什么?
前端负责”用户看到和操作的界面”,后端负责”处理完数据返回给前端”。一次完整的请求链路:
1 2 3 4 5 6 7 8 9 10 11 12
| 浏览器输入 URL ↓ DNS 解析 → 找到服务器 IP ↓ 建立 TCP 连接(三次握手) ↓ 发送 HTTP 请求 ↓ 服务器收到请求 ↓ 路由匹配 → 确定由哪个处理函数处理 ↓ 可能查询数据库 / 调用其他服务 / 读写文件 ↓ 组装响应数据(JSON/HTML/XML) ↓ 返回 HTTP 响应 ↓ 浏览器收到响应 → 解析渲染
|
核心概念对照(前端 ↔ 后端)
| 前端概念 | 后端对应 | 说明 |
|---|
| 组件 | 中间件 / Controller | 前端组件拼 UI,后端中间件拼处理链 |
| 状态管理 (Pinia/Vuex) | 数据库 + 缓存 (Redis) | 前端存组件状态,后端存持久化数据 |
| 路由 (Vue Router) | 服务器路由 | 前端控制页面切换,后端控制 API 分发 |
| 生命周期 (mounted) | 中间件执行顺序 | 前端组件挂载,后端请求经过中间件链 |
| 环境变量 (.env) | 环境变量 / 配置文件 | 前后端都有,区分 dev/prod |
| 打包构建 (Vite) | CI/CD 流水线 | 前端构建产物,后端构建镜像/部署 |
服务端两大核心模型
多进程 vs 多线程 vs 事件循环
| 模型 | 代表 | 特点 |
|---|
| 多进程 | PHP-FPM / Python WSGI | 每个请求一个进程,隔离好但内存开销大 |
| 多线程 | Java Spring / Ruby on Rails | 每个请求一个线程,共享内存但需注意并发 |
| 事件循环 | Node.js / Nginx | 单线程 + 异步 I/O,轻量但 CPU 密集型场景吃力 |
Node.js 事件循环(前端最熟悉的模型):
1 2 3 4 5 6 7 8 9
| 主线程(单线程) ↓ 注册异步任务(文件读写 / 网络请求 / 定时器) ↓ 主线程继续处理其他请求 ↓ 异步任务完成后 → 回调放入事件队列 ↓ 事件循环取回调执行
|
这就是为什么 Node.js 适合 I/O 密集型场景(API 网关、BFF 层),不适合 CPU 密集型场景(图像处理、大数据计算)。
后端分层架构
1 2 3 4 5 6 7 8 9
| 路由层 (Router) → 将 URL 映射到控制器 ↓ 控制器层 (Controller) → 参数校验、调用 Service、返回响应 ↓ 服务层 (Service) → 业务逻辑、事务管理 ↓ 数据访问层 (DAO/Repository) → 操作数据库 ↓ 数据库 (Database) → 持久化存储
|
前端类比: 组件 → 页面 → 业务逻辑 → API 请求 → 后端接口。
前端转后端的第一课
- 不要怕黑框终端:后端开发大量时间在命令行(启动服务、查看日志、操作数据库)
- 学会看日志:
console.log 在前端调试,stdout/stderr + 日志文件在后端 - **理解”无状态”**:HTTP 请求默认是无状态的,Session/JWT 就是为了给请求加”身份”
- RESTful API 接口规范:前端对接后端的第一道门槛,下一步讲
- 本地跑一个 Node.js 服务:Express 起一个 hello world,比任何概念都直观