小白需要理解的前端、后端、数据库

做一个 Web 产品,本质上就是三件事:展示、计算、存储。

你在浏览器里看到一个按钮、一个表单、一段文字——这是「展示」。你点了「加入购物车」,系统计算总价、检查库存——这是「计算」。你关掉浏览器,第二天打开发现购物车里的东西还在——这是「存储」。

几乎所有你能叫出名字的 Web 产品,不管是淘宝、Notion 还是一个简单的博客,底层都是这三件事的某种组合。在技术世界里,这三件事分别对应三个角色:Frontend(前端)、Backend(后端)、Database(数据库)。

如果你是刚接触技术的产品经理、设计师或创始人,不需要亲自写代码,但需要理解这三层各自做什么、彼此之间怎么配合。这篇文章用尽量通俗的方式把这三层讲清楚。


一个比喻:餐厅是怎么运作的

在正式展开之前,先用一个生活中的例子建立直觉。

想象一家餐厅。你走进去,看到菜单上的图片和描述、坐在舒适的座位上、跟服务员交流——这是前端,它负责和你打交道,把信息呈现给你。

你点完菜,服务员把订单送到厨房。厨师按照菜谱炒菜、控制火候、安排出菜顺序——这是后端,你看不到它,但它决定了菜能不能做出来、怎么做、什么时候做好。

厨房后面有一个仓库,里面存放着蔬菜、肉类、调料——这是数据库。厨师需要食材时去仓库取,用不完的放回去。仓库管理得好,食材新鲜、查找快;管理不好,就可能找不到东西或者拿到过期的。

这三者缺一不可。没有前端,顾客不知道有什么菜;没有后端,没人做菜;没有数据库,没有食材可用。


Frontend(前端):用户看到的一切

前端做什么

前端是用户直接看到、摸到、交互的那一层。打开一个网页,你看到的所有内容——导航栏、标题、图片、按钮、输入框、动画效果——全部是前端代码渲染出来的。

前端的核心职责有三件:

  1. 展示内容:把文字、图片、视频、数据以美观的方式呈现出来。
  2. 接收操作:捕捉用户的点击、输入、滑动、拖拽等行为。
  3. 与后端通信:把用户的操作翻译成一个请求(比如「查询第 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(后端):用户看不到的逻辑

后端做什么

后端运行在服务器上,用户看不见它,但它处理着所有的业务逻辑。

当你在电商网站点击「下单」,前端只是把一个请求发给后端。后端的任务是:检查商品是否还有库存、计算优惠后的价格、生成订单记录、扣减库存、调用支付接口、发送确认邮件。这些规则不会因为前端换了一套皮肤就改变——它们是业务的骨架。

后端的核心职责:

  1. 接收并处理请求:从前端接收请求,理解用户想做什么。
  2. 执行业务规则:按照预设的逻辑处理数据。比如「订单金额超过 200 免运费」「用户未登录不能下单」。
  3. 与数据库交互:查询数据、写入数据、更新数据、删除数据。
  4. 安全与权限:验证用户身份、检查操作权限、过滤非法输入。
  5. 对接外部服务:调用支付网关、发送短信、调用 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(数据库):数据的仓库

数据库做什么

数据库是持久化存储数据的地方。「持久化」的意思是:即使服务器重启、浏览器关闭,数据也不会丢失。

前端的页面是临时的——用户刷新页面,内存中的状态就清空了。后端程序重启,运行中的变量也会消失。只有写入数据库的数据,才能在下次访问时被找回。

数据库的核心职责:

  1. 存储数据:用户信息、商品信息、订单记录、评论内容——所有需要长期保存的数据。
  2. 高效查询:在百万甚至数十亿条数据中快速找到你需要的。
  3. 保证一致性:同一笔钱不会被转两次,同一个用户名不会被注册两次。
  4. 并发控制:多个用户同时操作同一条数据时,保证结果正确。

数据库的两大类型

数据库主要分为关系型和非关系型两大类。

关系型数据库(SQL) 把数据组织成表(Table),表与表之间有关系(Relation)。比如一张「用户表」和一张「订单表」,通过用户 ID 关联。关系型数据库要求数据有固定的结构——每张表有哪些列、每列是什么类型,都要提前定义好。

常见的关系型数据库:PostgreSQL、MySQL、SQLite。

非关系型数据库(NoSQL) 不要求固定的表结构,数据以文档、键值对、图等形式存储。灵活度更高,适合数据结构不固定或变化频繁的场景。

常见的非关系型数据库:MongoDB(文档型)、Redis(键值型)、DynamoDB(键值型)。

对比维度关系型数据库(SQL)非关系型数据库(NoSQL)
数据结构固定的表结构(行和列)灵活,可以是文档、键值对等
查询语言SQL(结构化查询语言)各数据库有自己的查询方式
事务支持强事务(ACID)通常较弱,部分支持
扩展方式纵向扩展(更强的服务器)横向扩展(更多的服务器)
适用场景金融、订单、用户管理等需要数据一致性的场景内容管理、实时通信、缓存等灵活读写的场景
代表产品PostgreSQL、MySQLMongoDB、Redis

对于大多数 Web 应用,关系型数据库是更安全的选择——它用结构换取了数据的一致性和可靠性。


三者的关系:一个请求的完整旅程

理解了每一层之后,关键问题是:它们怎么配合工作?

用一个具体场景来说明。假设你在一个电商网站搜索「无线耳机」:

  1. 你在搜索框输入关键词,点击搜索(前端)
  2. 前端把搜索关键词打包成一个 HTTP 请求,发送到后端的 API 地址,比如 GET /api/products?keyword=无线耳机(前端 → 后端)
  3. 后端收到请求,先做参数校验(关键词不能为空、不能包含特殊字符),然后拼装查询语句去数据库搜索(后端)
  4. 数据库执行查询,找到匹配的商品,把结果返回给后端(数据库 → 后端)
  5. 后端处理数据:过滤掉下架商品、按销量排序、分页、附加促销信息,然后打包成 JSON 格式返回给前端(后端 → 前端)
  6. 前端收到 JSON 数据,根据数据渲染商品列表,展示图片、名称、价格、评分(前端)
  7. 你看到了搜索结果页面

用一张流程图来展示这个过程:

流程图画布 · 115%
Mermaid 流程图加载中...

这个「前端 → 后端 → 数据库 → 后端 → 前端」的循环,几乎涵盖了所有 Web 应用的基本交互模式。不管是发一条推文、加载一段视频、还是提交一份表单,底层逻辑都是一样的。


各层职责对比

把三层的职责放在一起对比,差异更加清晰:

对比维度Frontend(前端)Backend(后端)Database(数据库)
运行位置用户的浏览器或 App远程服务器远程服务器(或云服务)
核心职责展示内容、接收交互业务逻辑、数据处理数据持久化存储
编程语言HTML、CSS、JavaScriptNode.js、Python、Go、Java 等SQL、数据库自有查询语言
用户是否可见可见不可见不可见
关注的重点好不好看、好不好用对不对、安不安全快不快、稳不稳
出问题的表现页面白屏、样式错乱、交互失效接口报错、数据计算错误数据丢失、查询缓慢
对比维度Frontend(前端)Backend(后端)Database(数据库)
餐厅类比菜单、服务员、用餐环境厨师、菜谱、厨房流程仓库、食材、库存管理
开发工具VS Code、Chrome DevTools、FigmaVS Code、Postman、DockerDBeaver、pgAdmin、命令行
部署方式CDN、静态托管(Vercel、Netlify)服务器、容器(Docker、K8s)云数据库服务、自建集群
性能瓶颈首屏加载速度、资源体积并发处理能力、接口响应时间查询速度、存储容量

常见技术选择

每个领域都有很多技术可供选择。下面列出主流选项及其特点,供快速建立认知:

Frontend 技术栈

技术特点适用场景
ReactFacebook 出品,组件化,生态最大各种规模的 Web 应用
Vue渐进式框架,上手简单,中文社区活跃中小型项目、快速开发
Next.js基于 React 的全栈框架,支持 SSR/SSG需要 SEO 和内容渲染的应用
Svelte编译时框架,运行时代码小,性能好追求极致性能的小型应用
Tailwind CSS原子化 CSS 框架,快速构建 UI各种前端项目

Backend 技术栈

技术特点适用场景
Node.js + ExpressJavaScript 全栈,生态丰富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)来管理内容,它们本质上帮你封装了后端和数据库。

交互流程:

流程图画布 · 115%
Mermaid 流程图加载中...

案例二:一个 AI 写作工具

假设你做了一个 AI 写作工具,用户输入提示词,AI 生成文章。这个产品的三层架构更复杂一些:

前端:一个编辑器界面。用户输入提示词、选择风格(专业/轻松/学术),点击「生成」。生成过程中展示 loading 动画,生成完成后逐字显示结果(流式输出)。用户满意后可以保存、编辑、导出。

后端:这一层承载了核心逻辑。接收到用户的提示词后,后端要做以下事情:检查用户是否有剩余使用次数(查数据库)、拼装 Prompt 模板、调用 OpenAI API 或 Claude API 获取生成结果、把结果写入数据库、扣减使用次数。如果支持流式输出,后端还要充当中间人,把 AI 的逐字输出实时转发给前端。

数据库:至少需要三张表——users(用户信息、余额)、documents(用户创建的文档)、generations(每次生成的记录,包括提示词、结果、消耗的 token 数)。

操作前端后端数据库
用户输入提示词捕获输入、校验格式
点击「生成」发送请求,显示 loading校验余额、拼装 Prompt查询用户余额
AI 返回结果流式展示文字调用 AI API,转发结果写入生成记录,扣减余额
点击「保存」发送保存请求处理保存逻辑写入文档表

三层架构的设计原则

理解了三层各自做什么之后,有几个原则值得记住:

各层独立。前端不应该知道数据存在哪个表里,后端不应该知道页面长什么样,数据库不应该知道谁会来查它。每一层只关心自己的事,通过约定好的接口(API)与其他层交流。

接口是契约。前端和后端之间的 API 是一种契约——前端承诺发送什么格式的请求,后端承诺返回什么格式的数据。只要契约不变,前端可以换框架,后端可以换语言,数据库可以换产品,互不影响。

前端可以很薄。现代架构的趋势是让前端尽可能简单——只负责展示和用户交互,复杂的逻辑放到后端处理。这样前端代码更容易维护,也更容易做多端适配(Web、App、小程序共享同一个后端)。

安全边界在后端。永远不要信任前端传来的数据。前端可以做输入校验让体验更好,但安全校验必须在后端做——因为前端代码是用户可以看到的,恶意用户可以绕过前端直接给后端发请求。


给非技术人员的实用建议

如果你是产品经理、设计师或创始人,不需要深入学习每一门技术,但以下认知会帮助你更好地与技术团队协作:

  1. 画原型时想想数据来源。每一个你在页面上展示的信息,都需要后端提供接口、从数据库获取。如果一个页面需要展示 10 种数据,后端至少需要写对应的查询逻辑。

  2. 改 UI 比改逻辑便宜。换颜色、调间距、改布局通常只影响前端。但如果要改变业务规则(比如从「满 200 免运费」改成「满 100 免运费」),就需要改后端代码。

  3. 数据迁移是大事。如果产品上线后要改变数据的存储结构(比如从一张表拆成两张表),涉及数据库变更,通常需要后端配合写迁移脚本,风险和工作量都不小。

  4. API 文档是沟通的桥梁。前端和后端之间的 API 接口应该有清晰的文档。如果你看到一份 Swagger 或 OpenAPI 文档,那它就是 API 的说明书。

  5. 性能优化要分层排查。页面加载慢可能是前端资源太大、后端接口响应慢、或者数据库查询慢。定位问题需要逐层排查,不要一开始就猜原因。


检查清单

在评估你的产品技术架构时,可以用以下清单做基本检查:

  • 前端和后端的职责边界是否清晰?前端是否混入了业务逻辑?
  • API 接口是否有文档?数据格式(JSON Schema)是否明确?
  • 数据库的表结构是否经过设计?有没有考虑索引和查询性能?
  • 敏感数据(密码、密钥、用户隐私)是否只存在后端和数据库中?
  • 前后端的通信是否走 HTTPS?API 是否有认证机制?
  • 前端是否做了错误处理?接口失败时是否有友好的提示?
  • 数据库是否有备份策略?能否回滚到某个时间点?
  • 技术选型是否考虑了团队的技术储备?是否有人能维护?
  • 是否预留了扩展空间?用户量增长 10 倍后,架构能否承受?
  • 各层是否可以独立部署和更新?某一层出问题时是否能快速回滚?
  • 是否有日志和监控?出了问题能否快速定位到是哪一层的责任?
  • 开发环境是否方便搭建?新成员能否在半天内跑起整个项目?

总结

做一个 Web 产品,就是做好三件事的分工和协作。前端负责让用户看到好的界面、流畅地操作;后端负责按照业务规则处理数据、保障安全;数据库负责把数据稳稳当当地存好、快速地取出来。

这三层之间的边界越清晰,产品越容易维护和扩展。技术选型没有绝对的好坏,只有是否适合当前的团队、业务和阶段。

理解了这三层的关系,你就能更好地和产品经理讨论需求、和设计师沟通交互、和工程师评估方案。这些知识不会让你变成程序员,但会让你成为一个更好的协作者。


参考资料