全栈开发全景图
就讲全栈开发是什么,前端、后端、数据库怎么配合的。
- 理解全栈开发的定义和价值
- 了解前端、后端、数据库的职责
- 掌握 HTTP 请求-响应模型
- 了解现代全栈技术栈选型
什么是全栈开发?
全栈开发(Full-Stack Development)指的是一个开发者能够同时负责前端(用户看到的界面)、后端(服务器上的业务逻辑)和数据库(数据存储)的开发。
就拿餐厅打比方:前端是菜单和餐桌,顾客直接接触的部分;后端是厨房,做菜的地方;数据库是仓库,存食材的地方。全栈工程师就是能同时管这三个部分的人。
创业公司、小团队里,全栈工程师能独立搞定一个产品从0到1的全部开发。大团队里,懂全栈能帮你更好和前后端同事协作,设计出更合理的系统架构。字节跳动、腾讯这些大厂的高级工程师岗位,几乎都要求全栈视野。
三层架构
一个典型的 Web 应用分为三层:
┌─────────────────────────────────┐
│ 前端(Frontend) │ ← 用户看到的界面
│ HTML / CSS / JavaScript │
│ React / Vue / Next.js │
└──────────────┬──────────────────┘
│ HTTP 请求 / JSON
┌──────────────▼──────────────────┐
│ 后端(Backend) │ ← 业务逻辑、API
│ Python / Node.js / Java │
│ Django / FastAPI / Flask │
└──────────────┬──────────────────┘
│ SQL / ORM
┌──────────────▼──────────────────┐
│ 数据库(Database) │ ← 数据持久化
│ PostgreSQL / MySQL / Redis │
└─────────────────────────────────┘HTTP 协议基础
前端和后端之间通过 HTTP 协议通信。你在浏览器地址栏输入网址并回车,浏览器就向服务器发送了一个 HTTP GET 请求。
# 用 Python 模拟 HTTP 请求(概念演示)
print("""HTTP 请求结构:
GET /api/users HTTP/1.1 ← 请求行:方法 + 路径 + 版本
Host: example.com ← 请求头
Authorization: Bearer xxx ← 认证信息
HTTP 响应结构:
HTTP/1.1 200 OK ← 状态行:版本 + 状态码
Content-Type: application/json ← 响应头
{"users": [{"name": "小明"}]} ← 响应体(JSON)""")GET:获取数据;POST:创建数据;PUT/PATCH:更新数据;DELETE:删除数据。这四个方法对应数据库的增删改查(CRUD)。
200 成功;201 创建成功;400 请求错误;401 未登录;403 无权限;404 不存在;500 服务器错误。
现代技术栈选型
Python 全栈常见组合:
主流 Python 全栈技术栈
方案A:Django 全家桶 前端:Django Templates + Bootstrap 后端:Django + DRF 数据库:PostgreSQL 适合:内容型网站、管理后台、快速 MVP方案B:前后端分离(推荐) 前端:Next.js / React + Tailwind CSS 后端:FastAPI(高性能异步) 数据库:PostgreSQL + Redis 适合:SaaS 产品、移动端 API、AI 应用方案C:轻量级 前端:Flask + Jinja2 / HTMX 后端:Flask 数据库:SQLite → PostgreSQL 适合:小型工具、个人项目、原型验证
别盲目追新。选型看这几点:团队熟悉度社区生态性能需求部署成本。FastAPI 性能好但生态不如 Django 成熟;Django 功能全但异步支持弱。本项目(朋友好学)用 Next.js + Pyodide 的纯前端方案,零后端依赖,是特殊但聪明的架构选择——后面的项目解析课会详细讲原因。
前端和后端之间通常用什么格式交换数据?
下列哪一项属于后端的职责?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
网络侧:DNS→TCP/TLS→HTTP 请求与响应;浏览器侧:解析 HTML 建 DOM、解析 CSS 建 CSSOM、合并成渲染树,再经过布局(Layout)、绘制(Paint)、合成(Composite)上屏。前端性能优化几乎都围绕这条链路:减小资源体积、优化关键渲染路径、避免频繁触发重排重绘。
挑战任务
拼出 HTTP 请求行
浏览器每次请求都先发送一行「方法 + 路径 + 协议版本」。实现request_line(method, path),拼出形如 GET /api/users HTTP/1.1 的请求行,方法要大写。
课后作业
画出你理解的全栈架构
拿纸笔或者画图工具,画个 Web 应用的三层架构图,标清楚每一层的职责和用的技术。拍个照或者截个图存好。