认识前后端
前言
我总是听到前端、后端、还有前后端分离。但说实话,从来没有好好体会这些词语的含义。
我希望能讲清楚哪些东西让人产生误解。(前后端这两个词就很容易产生误解。
前端、后端Q&A ———— 吃瓜小白常见疑惑解答
粘点没用的东西:和Deepseek的对话,我给的Prmopt:
下面是一场和你的技术探讨:
我们来聊聊前后端的概念。 前后端的概念在Web开发中兴起。
常见误解1:把Clinet-Server架构混一块:前端就是用户端/浏览器端(Client)。 后端就是服务器端。
常见误解2:——技术层面:前端就是CSS, HTML等内容信息,让页面长什么样、有什么内容。后端就是Python, Java这种语言,用来管理数据库、对用户发送的请求做出响应。至于用户的请求如何发送给服务器对应的这一块技术 ,他会说既不是前端也不是后端。
正确理解:
1.前端 后端是两个进程。 所以,后端和前端的实现可以有很多种类,这也是为什么小白在初接触web技术会产生困惑:以为前端就是死的,描述性、标注性代码。后端就很”活“。
2. 技术上来看,前端和后端既不是什么浏览器技术、也不是什么服务器端的技术。 他们是用来描述一个互联网公司的技术栈。和你用户端、浏览器端没有关系! 前端技术——互联网公司什么技术将用户的输入转化成某个个格式的请求。 后端技术 ——如何将前端发送过来的特定格式的用户数据存储起来,如何响应某种请求。
至于CSS, JS, HTML。 我们不会说它是前端技术还是后端技术。他们只是构成网页源码的基本元素。很多框架也基于他们改进。不会出现在技术栈选型的讨论中
我真想把Deepseek的回答全部粘贴进来…..但我知道这毫无意义。
这是两个逻辑层,他们干的事情、他们的目标都不同。
小白(脑子很混乱):
- “前,摆在前面的。后,藏在后面看不见的。欧~我懂了,前端就是你在浏览器前看到的,后端就是服务器里的程序。懂了,前端就是浏览器上就是看到的HTML网页。”。很含糊的认知……
- 前端和后端关注的问题
- 前端和后端的关键动作
- 前后端技术的代码实现是什么样?前端就是CSS/HTML? 后端就是Java,JavaScript?
- 前后端的技术:语言、框架?
- 感觉前后端运行在不同的设备上。服务器和客户端主机。
- 以为前端就只包含动态信息的处理, Svelte, Next.js Expressjs, ….。后端技术只管业务逻辑、数据持久化 Spring-boot/Django; SQL/MongoDB 。
解释:
- 早期Web开发中,前端进程几乎只能运行在浏览器中。而前端技术栈确实有一层领域:呈现层(关注内容结构和视觉表现)就是HTML,CSS相关的技术。确实容易误会成所谓的前端代码、前端技术就是HTML,CSS。 但用户体验还包含一个层面!是前端技术栈很重要的一环:将用户行为(点击、输入)序列化为结构化请求(如JSON over HTTP)
- Front-End:如何高效采集输入 & 呈现输出. 后端关注业务逻辑与数据完整性。
- 前端进程:一方面,将用户行为(点击、输入)序列化为结构化请求(如JSON over HTTP)。另一方面,将服务器发送过来的响应数据(JSON格式)反序列化并渲染为可视化界面(HTML网页元素); 后端进程:验证/清洗前端传入的数据。执行计算、数据库操作等核心逻辑。返回结构化响应(如JSON/Protobuf)。
- 不不不。前端可以是浏览器、移动端App、桌面应用甚至命令行工具。
- 前端框架(专注于序列化、代表性技术):多基于JS:React, Svelte
- 浏览器(PWA)、手机(React Native)、物联网设备(车载UI)、城市物联网传感器设备。微服务、Serverless、边缘计算(如Cloudflare Workers)。
- 运营一个互联网公司比你想象得复杂!不只是你日常体验到的。工程师讨论前端技术栈的技术选型,包括以下层面:交互逻辑层(状态管理、数据绑定、组件化e.g. React/Vue/Svelte);呈现层、通信层(Axios, Websocket)、构建层(代码优化、依赖管理、部署打包,e.g.Webpack,Vite)、通信层(请求格式化、连接管理、错误处理,e.g.Axios、GraphQL Client、WebSocket)。 后端技术栈领域还包括:运维层部署(监控、扩缩容,e.g. Docker/K8s、CI/CD)、协议层(通信协议标准化,e.g.HTTP/gRPC/WebSocket ),业务逻辑层(Spring Boot/Django) ,数据层(数据持久化与高速访问,e.g.SQL/NoSQL、Redis…)
p.s. 虽然构建层、通信层说的Axios,Vite技术第一次听,也不知道是干什么的。但是他们是Github上的爆火项目。
由于这只是出于好奇心的科普文,水平、阅历有限。关于前端、后端各个层的作用、更专业的实战领域暂且放下。
说说前后端分离
至此,我们搞懂了前后端进程做什么事情。大咖们聊前后端技术栈覆盖涵盖的几个层面。高级的前端工程师除了聊交互逻辑层,还会关注一下好看的呈现层技术、硬核的通信层、构建层。 高级的后端工程师除了写Java、数据库,还要懂点通信协议,搞搞运维。
那再聊聊软件架构吧!
这也是一个一听中文就要冒火的词,前端、后端的功能/行为/技术栈不是分得很清楚了嘛,本身就是“隔开的”呀。
前后端分离是技术革新带来的现象。以前的JSP技术,后端的响应里要写HTML标签(你敢信?)。就是说,后端工程师要懂前端的知识,e.g.前端—呈现层的HTML语法。 粗略概括“前后端分离”的开发场景:出现了前端工程师和后端工程师的工种。互联网公司的程序员们的分工更明确了。
聊聊JS生态
一个很烦人的词:全栈
全栈。可以这么拆分理解:一个技术/语言 涵盖了整个业务。哪都有这门语言。
经典的是:Web开发领域 MERN/MEVN–技术栈架构:MongoDB + Express + React/Vue + Node.js。而我们也长讨论全栈的好处:1. 语言统一(减少上下文切换)2. 生态协同(如共享npm包)
Java在Web开发领域也有一套技术栈,但是没那么流行。
全栈还有泛化的含义:包含公司整个业务,而不是某一段过程。
DevOps全栈:涵盖开发→部署→监控(如AWS + Kubernetes + CI/CD)
数据全栈:从数据采集(前端埋点)到分析(Python/Pandas)再到可视化(D3.js)
全栈一次还在招聘中出现过,全栈工程师。形容多面手,了解整个流程但不一定都精通。