编程指南-学习建议编程指南-学习建议
首页
学习方向
技术学习
🚀 编程指南
首页
学习方向
技术学习
🚀 编程指南
  • 三、技术学习

    • 技术指南

      • 前端技术知识

        • 什么是前端?
      • 后端技术知识

        • 什么是缓存?
        • 什么是工作流技术?
        • 什么是反向压力?
        • 什么是热数据探测?
        • 数据库也能版本控制?
        • /tech-learning/guide/backend/how-search-engine-works.html
        • /tech-learning/guide/backend/learn-concurrency.html
        • /tech-learning/guide/backend/other-databases.html
      • 通用技术知识

        • 什么是前后端分离?
        • /tech-learning/guide/general/what-is-redirect.html
        • 什么是单例模式?
        • /tech-learning/guide/general/what-is-magic-value.html
        • 什么是负载均衡?
        • /tech-learning/guide/general/what-is-multi-env.html
        • /tech-learning/guide/general/what-is-magic-number.html
        • 什么是 Linux?
        • /tech-learning/guide/general/what-is-cloud-dev.html
    • 系统设计

      • 如何设计一个实时排行榜系统?
      • /tech-learning/system-design/elasticsearch-optimization.html
      • /tech-learning/system-design/file-upload.html
      • /tech-learning/system-design/log-system.html
      • /tech-learning/system-design/software-sword.html
      • 如何设计好 API 接口?
      • /tech-learning/system-design/sdk-development.html
      • /tech-learning/system-design/architecture-design.html
      • /tech-learning/system-design/release-stability.html
    • 开发经验

      • 解决 Bug 经验
      • 如何快速上手新项目?
      • /tech-learning/dev-experience/enterprise-software.html
      • /tech-learning/dev-experience/opensource-contribute.html
      • 什么是代码规范?为什么要遵循代码规范?
      • /tech-learning/dev-experience/company-standards.html
      • /tech-learning/dev-experience/code-reuse.html
      • /tech-learning/dev-experience/quick-website.html
      • /tech-learning/dev-experience/vscode-remote.html
      • /tech-learning/dev-experience/linux-vm-remote.html
      • /tech-learning/dev-experience/young-contributor.html
      • /tech-learning/dev-experience/no-force-shutdown.html
      • /tech-learning/dev-experience/no-hardcode.html
      • /tech-learning/dev-experience/backend-attention.html
      • 千万别直接敲代码!(写代码前要做的事)
      • /tech-learning/dev-experience/project-attention.html
      • /tech-learning/dev-experience/website-online.html
      • /tech-learning/dev-experience/tech-selection.html

什么是前后端分离?

这是一个很基础但很重要的概念,今天来说说。

以前是怎么做的

在前后端分离之前,网站是这样开发的:

后端不只是写逻辑,还要写页面。比如用JSP、PHP这些技术,把数据和HTML混在一起,服务器渲染好页面再发给浏览器。

这种方式叫服务端渲染,前后端代码混在一起。

什么是前后端分离

前后端分离就是:前端和后端各干各的,通过接口通信。

  • 后端只负责提供数据接口(API)
  • 前端只负责页面展示和交互
  • 前端通过Ajax调用后端接口获取数据

前端和后端是两个独立的项目,可以独立开发、独立部署。

为什么要前后端分离

1. 分工明确

前端专注于页面和交互,后端专注于业务逻辑和数据。各自深耕自己的领域。

2. 开发效率高

以前前端要等后端把页面模板写好才能开发。现在定好接口之后,前后端可以并行开发。

3. 方便维护

代码分开了,改前端不影响后端,改后端不影响前端。

4. 复用性好

同一套后端接口,可以给网页用,也可以给App用,也可以给小程序用。

怎么实现前后端分离

后端

提供RESTful API,返回JSON格式的数据。

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    return userService.getById(id);
}

前端

通过Ajax(或者axios这样的库)调用接口,获取数据后渲染页面。

axios.get('/api/users/1').then(res => {
    this.user = res.data
})

接口文档

前后端要约定好接口:什么地址、传什么参数、返回什么数据。

通常用Swagger或者Apifox这样的工具来管理接口文档。

现在的主流

现在绝大多数的互联网项目都是前后端分离的。

你学Java后端,写的就是API接口,不用管页面怎么展示。

你学前端,用的是Vue/React这些框架,调用后端接口获取数据。

如果你做的项目还是前后端不分离的(比如JSP),那可能是比较老的项目或者教程了。

最后

前后端分离是现代Web开发的标准做法。

理解这个概念,有助于你理解整个Web系统是怎么运作的。

上次更新: 2025/12/7 09:34
Next
/tech-learning/guide/general/what-is-redirect.html