小白需要理解的前端、后端、数据库
做一个 Web 产品,本质上就是三件事:展示、计算、存储。
你在浏览器里看到一个按钮、一个表单、一段文字——这是「展示」。你点了「加入购物车」,系统计算总价、检查库存——这是「计算」。你关掉浏览器,第二天打开发现购物车里的东西还在——这是「存储」。
几乎所有你能叫出名字的 Web 产品,不管是淘宝、Notion 还是一个简单的博客,底层都是这三件事的某种组合。在技术世界里,这三件事分别对应三个角色:Frontend(前端)、Backend(后端)、Database(数据库)。
如果你是刚接触技术的产品经理、设计师或创始人,不需要亲自写代码,但需要理解这三层各自做什么、彼此之间怎么配合。这篇文章用尽量通俗的方式把这三层讲清楚。
一个比喻:餐厅是怎么运作的
在正式展开之前,先用一个生活中的例子建立直觉。
想象一家餐厅。你走进去,看到菜单上的图片和描述、坐在舒适的座位上、跟服务员交流——这是前端,它负责和你打交道,把信息呈现给你。
你点完菜,服务员把订单送到厨房。厨师按照菜谱炒菜、控制火候、安排出菜顺序——这是后端,你看不到它,但它决定了菜能不能做出来、怎么做、什么时候做好。
厨房后面有一个仓库,里面存放着蔬菜、肉类、调料——这是数据库。厨师需要食材时去仓库取,用不完的放回去。仓库管理得好,食材新鲜、查找快;管理不好,就可能找不到东西或者拿到过期的。
这三者缺一不可。没有前端,顾客不知道有什么菜;没有后端,没人做菜;没有数据库,没有食材可用。
Frontend(前端):用户看到的一切
前端做什么
前端是用户直接看到、摸到、交互的那一层。打开一个网页,你看到的所有内容——导航栏、标题、图片、按钮、输入框、动画效果——全部是前端代码渲染出来的。
前端的核心职责有三件:
- 展示内容:把文字、图片、视频、数据以美观的方式呈现出来。
- 接收操作:捕捉用户的点击、输入、滑动、拖拽等行为。
- 与后端通信:把用户的操作翻译成一个请求(比如「查询第 2 页的商品」),发送给后端,等后端返回数据后再更新页面。
前端由什么构成
前端代码运行在浏览器里,核心由三种语言组成:
- HTML(HyperText Markup Language):定义页面的结构和内容。比如「这里有一个标题」「这里有一段文字」。它是骨架。
- CSS(Cascading Style Sheets):定义页面的样式。比如「标题用 24 号字、蓝色」「这段文字居中对齐、带阴影」。它是皮肤和衣服。
- JavaScript:定义页面的行为。比如「点击按钮后弹出购物车」「滚动到底部时自动加载更多」。它是肌肉和神经。
现代前端开发已经远超这三种语言本身。开发者会使用框架来组织代码、管理状态、处理路由。主流框架包括 React、Vue、Svelte,以及基于这些框架的上层工具如 Next.js、Nuxt.js。
前端的关键概念
| 概念 | 含义 |
|---|---|
| UI(User Interface) | 用户界面,用户看到的视觉元素 |
| UX(User Experience) | 用户体验,用户使用产品的整体感受 |
| 响应式设计 | 页面在手机、平板、电脑上都能正常显示 |
| 组件化 | 把页面拆成可复用的积木块(按钮、卡片、弹窗) |
| 状态管理 | 管理页面中动态变化的数据(购物车数量、登录状态) |
| SPA(Single Page Application) | 单页应用,页面不刷新,通过 JavaScript 动态更新内容 |
Backend(后端):用户看不到的逻辑
后端做什么
后端运行在服务器上,用户看不见它,但它处理着所有的业务逻辑。
当你在电商网站点击「下单」,前端只是把一个请求发给后端。后端的任务是:检查商品是否还有库存、计算优惠后的价格、生成订单记录、扣减库存、调用支付接口、发送确认邮件。这些规则不会因为前端换了一套皮肤就改变——它们是业务的骨架。
后端的核心职责:
- 接收并处理请求:从前端接收请求,理解用户想做什么。
- 执行业务规则:按照预设的逻辑处理数据。比如「订单金额超过 200 免运费」「用户未登录不能下单」。
- 与数据库交互:查询数据、写入数据、更新数据、删除数据。
- 安全与权限:验证用户身份、检查操作权限、过滤非法输入。
- 对接外部服务:调用支付网关、发送短信、调用 AI 接口等。
后端由什么构成
后端代码运行在服务器上,可以使用多种编程语言。常见的有:
- Node.js(JavaScript/TypeScript):前端开发者容易上手,生态丰富,适合 I/O 密集型应用。
- Python:语法简洁,在 AI、数据分析领域有天然优势。
- Go:性能好、并发能力强,适合高流量场景。
- Java:企业级应用的传统选择,生态成熟。
- Ruby:开发效率高,创业公司常用(Ruby on Rails)。
后端框架帮助开发者组织代码、处理路由、管理中间件。常见的有 Express(Node.js)、Django/FastAPI(Python)、Gin(Go)、Spring Boot(Java)。
后端的关键概念
| 概念 | 含义 |
|---|---|
| API(Application Programming Interface) | 前后端通信的接口,定义了前端可以请求什么、后端返回什么 |
| REST | 一种 API 设计风格,用 HTTP 方法(GET/POST/PUT/DELETE)对应增删改查 |
| 认证与授权 | 认证是「你是谁」,授权是「你能做什么」 |
| 中间件 | 请求处理流程中的「关卡」,用于日志、鉴权、限流等 |
| 微服务 | 把后端拆成多个独立的小服务,各自负责一块业务 |
| 缓存 | 把频繁读取的数据存在快速访问的地方,减少数据库压力 |
Database(数据库):数据的仓库
数据库做什么
数据库是持久化存储数据的地方。「持久化」的意思是:即使服务器重启、浏览器关闭,数据也不会丢失。
前端的页面是临时的——用户刷新页面,内存中的状态就清空了。后端程序重启,运行中的变量也会消失。只有写入数据库的数据,才能在下次访问时被找回。
数据库的核心职责:
- 存储数据:用户信息、商品信息、订单记录、评论内容——所有需要长期保存的数据。
- 高效查询:在百万甚至数十亿条数据中快速找到你需要的。
- 保证一致性:同一笔钱不会被转两次,同一个用户名不会被注册两次。
- 并发控制:多个用户同时操作同一条数据时,保证结果正确。
数据库的两大类型
数据库主要分为关系型和非关系型两大类。
关系型数据库(SQL) 把数据组织成表(Table),表与表之间有关系(Relation)。比如一张「用户表」和一张「订单表」,通过用户 ID 关联。关系型数据库要求数据有固定的结构——每张表有哪些列、每列是什么类型,都要提前定义好。
常见的关系型数据库:PostgreSQL、MySQL、SQLite。
非关系型数据库(NoSQL) 不要求固定的表结构,数据以文档、键值对、图等形式存储。灵活度更高,适合数据结构不固定或变化频繁的场景。
常见的非关系型数据库:MongoDB(文档型)、Redis(键值型)、DynamoDB(键值型)。
| 对比维度 | 关系型数据库(SQL) | 非关系型数据库(NoSQL) |
|---|---|---|
| 数据结构 | 固定的表结构(行和列) | 灵活,可以是文档、键值对等 |
| 查询语言 | SQL(结构化查询语言) | 各数据库有自己的查询方式 |
| 事务支持 | 强事务(ACID) | 通常较弱,部分支持 |
| 扩展方式 | 纵向扩展(更强的服务器) | 横向扩展(更多的服务器) |
| 适用场景 | 金融、订单、用户管理等需要数据一致性的场景 | 内容管理、实时通信、缓存等灵活读写的场景 |
| 代表产品 | PostgreSQL、MySQL | MongoDB、Redis |
对于大多数 Web 应用,关系型数据库是更安全的选择——它用结构换取了数据的一致性和可靠性。
三者的关系:一个请求的完整旅程
理解了每一层之后,关键问题是:它们怎么配合工作?
用一个具体场景来说明。假设你在一个电商网站搜索「无线耳机」:
- 你在搜索框输入关键词,点击搜索(前端)
- 前端把搜索关键词打包成一个 HTTP 请求,发送到后端的 API 地址,比如
GET /api/products?keyword=无线耳机(前端 → 后端) - 后端收到请求,先做参数校验(关键词不能为空、不能包含特殊字符),然后拼装查询语句去数据库搜索(后端)
- 数据库执行查询,找到匹配的商品,把结果返回给后端(数据库 → 后端)
- 后端处理数据:过滤掉下架商品、按销量排序、分页、附加促销信息,然后打包成 JSON 格式返回给前端(后端 → 前端)
- 前端收到 JSON 数据,根据数据渲染商品列表,展示图片、名称、价格、评分(前端)
- 你看到了搜索结果页面
用一张流程图来展示这个过程:
这个「前端 → 后端 → 数据库 → 后端 → 前端」的循环,几乎涵盖了所有 Web 应用的基本交互模式。不管是发一条推文、加载一段视频、还是提交一份表单,底层逻辑都是一样的。
各层职责对比
把三层的职责放在一起对比,差异更加清晰:
| 对比维度 | Frontend(前端) | Backend(后端) | Database(数据库) |
|---|---|---|---|
| 运行位置 | 用户的浏览器或 App | 远程服务器 | 远程服务器(或云服务) |
| 核心职责 | 展示内容、接收交互 | 业务逻辑、数据处理 | 数据持久化存储 |
| 编程语言 | HTML、CSS、JavaScript | Node.js、Python、Go、Java 等 | SQL、数据库自有查询语言 |
| 用户是否可见 | 可见 | 不可见 | 不可见 |
| 关注的重点 | 好不好看、好不好用 | 对不对、安不安全 | 快不快、稳不稳 |
| 出问题的表现 | 页面白屏、样式错乱、交互失效 | 接口报错、数据计算错误 | 数据丢失、查询缓慢 |
| 对比维度 | Frontend(前端) | Backend(后端) | Database(数据库) |
|---|---|---|---|
| 餐厅类比 | 菜单、服务员、用餐环境 | 厨师、菜谱、厨房流程 | 仓库、食材、库存管理 |
| 开发工具 | VS Code、Chrome DevTools、Figma | VS Code、Postman、Docker | DBeaver、pgAdmin、命令行 |
| 部署方式 | CDN、静态托管(Vercel、Netlify) | 服务器、容器(Docker、K8s) | 云数据库服务、自建集群 |
| 性能瓶颈 | 首屏加载速度、资源体积 | 并发处理能力、接口响应时间 | 查询速度、存储容量 |
常见技术选择
每个领域都有很多技术可供选择。下面列出主流选项及其特点,供快速建立认知:
Frontend 技术栈
| 技术 | 特点 | 适用场景 |
|---|---|---|
| React | Facebook 出品,组件化,生态最大 | 各种规模的 Web 应用 |
| Vue | 渐进式框架,上手简单,中文社区活跃 | 中小型项目、快速开发 |
| Next.js | 基于 React 的全栈框架,支持 SSR/SSG | 需要 SEO 和内容渲染的应用 |
| Svelte | 编译时框架,运行时代码小,性能好 | 追求极致性能的小型应用 |
| Tailwind CSS | 原子化 CSS 框架,快速构建 UI | 各种前端项目 |
Backend 技术栈
| 技术 | 特点 | 适用场景 |
|---|---|---|
| Node.js + Express | JavaScript 全栈,生态丰富 | API 服务、实时应用 |
| Python + FastAPI | 语法简洁,AI/数据领域友好 | AI 服务、数据密集型 API |
| Go + Gin | 高并发、高性能、编译快 | 高流量服务、微服务 |
| Ruby on Rails | 开发效率高,约定大于配置 | 快速原型、创业产品 |
| Java + Spring Boot | 成熟稳定,企业级首选 | 大型企业系统 |
Database 技术选择
| 技术 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| PostgreSQL | 关系型 | 功能最全的开源 SQL 数据库,支持 JSON、全文搜索 | 绝大多数 Web 应用的默认选择 |
| MySQL | 关系型 | 使用广泛,云服务商支持好 | Web 应用、内容管理 |
| MongoDB | 文档型 | 灵活的文档结构,水平扩展方便 | 内容管理、实时分析 |
| Redis | 键值型 | 内存数据库,读写极快 | 缓存、会话管理、排行榜 |
| SQLite | 关系型 | 嵌入式,零配置,单文件 | 小型应用、本地开发 |
案例解析
案例一:一个博客网站
假设你要做一个简单的个人博客。三层架构是这样分工的:
前端:用 Next.js 构建。首页展示文章列表,每篇文章有标题、摘要、发布日期。点击文章进入详情页,展示完整内容。前端代码负责排版、代码高亮、暗色模式切换、移动端适配。
后端:如果是一个纯静态博客(用 SSG 生成),甚至不需要传统意义上的后端——Next.js 在构建时就把内容写成了 HTML 文件。但如果需要评论功能、邮件订阅,就需要一个 API 来处理:接收评论、验证邮箱、调用邮件服务。这个 API 可以用 Next.js 自带的 API Routes,也可以用独立的 Hono 或 Express 服务。
数据库:文章数据可以存放在 PostgreSQL 里——一张 posts 表存储标题、内容、发布时间、标签。评论数据存在 comments 表里,通过 post_id 关联到文章。也可以用 Headless CMS(比如 Strapi、Contentful)来管理内容,它们本质上帮你封装了后端和数据库。
交互流程:
案例二:一个 AI 写作工具
假设你做了一个 AI 写作工具,用户输入提示词,AI 生成文章。这个产品的三层架构更复杂一些:
前端:一个编辑器界面。用户输入提示词、选择风格(专业/轻松/学术),点击「生成」。生成过程中展示 loading 动画,生成完成后逐字显示结果(流式输出)。用户满意后可以保存、编辑、导出。
后端:这一层承载了核心逻辑。接收到用户的提示词后,后端要做以下事情:检查用户是否有剩余使用次数(查数据库)、拼装 Prompt 模板、调用 OpenAI API 或 Claude API 获取生成结果、把结果写入数据库、扣减使用次数。如果支持流式输出,后端还要充当中间人,把 AI 的逐字输出实时转发给前端。
数据库:至少需要三张表——users(用户信息、余额)、documents(用户创建的文档)、generations(每次生成的记录,包括提示词、结果、消耗的 token 数)。
| 操作 | 前端 | 后端 | 数据库 |
|---|---|---|---|
| 用户输入提示词 | 捕获输入、校验格式 | — | — |
| 点击「生成」 | 发送请求,显示 loading | 校验余额、拼装 Prompt | 查询用户余额 |
| AI 返回结果 | 流式展示文字 | 调用 AI API,转发结果 | 写入生成记录,扣减余额 |
| 点击「保存」 | 发送保存请求 | 处理保存逻辑 | 写入文档表 |
三层架构的设计原则
理解了三层各自做什么之后,有几个原则值得记住:
各层独立。前端不应该知道数据存在哪个表里,后端不应该知道页面长什么样,数据库不应该知道谁会来查它。每一层只关心自己的事,通过约定好的接口(API)与其他层交流。
接口是契约。前端和后端之间的 API 是一种契约——前端承诺发送什么格式的请求,后端承诺返回什么格式的数据。只要契约不变,前端可以换框架,后端可以换语言,数据库可以换产品,互不影响。
前端可以很薄。现代架构的趋势是让前端尽可能简单——只负责展示和用户交互,复杂的逻辑放到后端处理。这样前端代码更容易维护,也更容易做多端适配(Web、App、小程序共享同一个后端)。
安全边界在后端。永远不要信任前端传来的数据。前端可以做输入校验让体验更好,但安全校验必须在后端做——因为前端代码是用户可以看到的,恶意用户可以绕过前端直接给后端发请求。
给非技术人员的实用建议
如果你是产品经理、设计师或创始人,不需要深入学习每一门技术,但以下认知会帮助你更好地与技术团队协作:
-
画原型时想想数据来源。每一个你在页面上展示的信息,都需要后端提供接口、从数据库获取。如果一个页面需要展示 10 种数据,后端至少需要写对应的查询逻辑。
-
改 UI 比改逻辑便宜。换颜色、调间距、改布局通常只影响前端。但如果要改变业务规则(比如从「满 200 免运费」改成「满 100 免运费」),就需要改后端代码。
-
数据迁移是大事。如果产品上线后要改变数据的存储结构(比如从一张表拆成两张表),涉及数据库变更,通常需要后端配合写迁移脚本,风险和工作量都不小。
-
API 文档是沟通的桥梁。前端和后端之间的 API 接口应该有清晰的文档。如果你看到一份 Swagger 或 OpenAPI 文档,那它就是 API 的说明书。
-
性能优化要分层排查。页面加载慢可能是前端资源太大、后端接口响应慢、或者数据库查询慢。定位问题需要逐层排查,不要一开始就猜原因。
检查清单
在评估你的产品技术架构时,可以用以下清单做基本检查:
- 前端和后端的职责边界是否清晰?前端是否混入了业务逻辑?
- API 接口是否有文档?数据格式(JSON Schema)是否明确?
- 数据库的表结构是否经过设计?有没有考虑索引和查询性能?
- 敏感数据(密码、密钥、用户隐私)是否只存在后端和数据库中?
- 前后端的通信是否走 HTTPS?API 是否有认证机制?
- 前端是否做了错误处理?接口失败时是否有友好的提示?
- 数据库是否有备份策略?能否回滚到某个时间点?
- 技术选型是否考虑了团队的技术储备?是否有人能维护?
- 是否预留了扩展空间?用户量增长 10 倍后,架构能否承受?
- 各层是否可以独立部署和更新?某一层出问题时是否能快速回滚?
- 是否有日志和监控?出了问题能否快速定位到是哪一层的责任?
- 开发环境是否方便搭建?新成员能否在半天内跑起整个项目?
总结
做一个 Web 产品,就是做好三件事的分工和协作。前端负责让用户看到好的界面、流畅地操作;后端负责按照业务规则处理数据、保障安全;数据库负责把数据稳稳当当地存好、快速地取出来。
这三层之间的边界越清晰,产品越容易维护和扩展。技术选型没有绝对的好坏,只有是否适合当前的团队、业务和阶段。
理解了这三层的关系,你就能更好地和产品经理讨论需求、和设计师沟通交互、和工程师评估方案。这些知识不会让你变成程序员,但会让你成为一个更好的协作者。
参考资料
- What Is Three-Tier Architecture? - IBM
- 前端与后端:应用程序开发之间的区别 - AWS
- Web Application Architecture: Layers, Models, Components - InvoZone
- 用最小案例搞懂前端、后端、数据库是怎么连在一起的 - CSDN
- Understanding the Web Application Architecture Fundamentals - Cleveroad
- What is the difference between Backend and Database? - freeCodeCamp
- Three-Tier Architecture Overview - Dev.to