一、什么是前后端分离

原笔记对前后端分离的解释非常清晰:

  • 静态资源部分属于前端
  • 动态功能部分属于后端
  • 两者通过 API 接口交互

也就是说,在这种模式下:

  • 前端不再直接和数据库打交道
  • 后端专注业务逻辑与数据处理
  • 前端通过接口拿数据并做页面展示

二、前端、后端、API 分别扮演什么角色

原笔记把这一层关系概括为:

  • 前端:HTML、CSS、JS 等静态资源
  • 后端:Java、PHP、Python、Golang 等动态服务
  • API:前后端沟通的桥梁

其中 API 的核心意义是:

  • 开发人员提前写好调用入口
  • 使用者不需要关心内部实现
  • 只需要知道怎么调用接口即可

这也是为什么原笔记强调:

  • API 在各种服务中都广泛存在

三、为什么前端代码和后端代码的构建方式不同

原笔记在这部分特别提醒了一个部署层面的差异:

  • 前端源代码通常需要通过 Node.js 等环境编译
  • 编译后产出的是静态资源文件
  • 最终更适合放到 Nginx 中提供访问

而后端 Java 代码则通常需要:

  • 通过 Maven 或 Gradle 编译
  • 生成 war 包或 jar
  • 再交给 Tomcat 或 java -jar 去运行

所以前后端分离不仅是开发模式的变化,也意味着部署链路发生了变化。

四、全栈和前后端分离是什么关系

原笔记顺带提到:

  • 全栈 = 前端 + 后端

可以把它理解成:

  • 全栈强调一个人能覆盖前后端能力
  • 前后端分离强调项目结构和交付方式的拆分

它们并不冲突,只是描述维度不同。

五、案例项目:学之思开源考试系统

原笔记选用的实践项目是:

  • 学之思开源考试系统

它的特点包括:

  • 技术栈是 Java + Vue
  • 适合做前后端分离部署
  • 同时覆盖 Web 端和移动端场景

原笔记给出的实验架构如下:

主机 角色
web01 前端(Nginx)+ 后端(JDK / Jar)
db02 MySQL 8.0

这说明在这个实验里:

  • 前端和后端虽然逻辑分离
  • 但物理上仍然可以先部署在同一台 Web 机上

六、为什么这个项目很适合用来理解前后端分离

从原笔记的组织方式看,这个项目正好能把前后端分离部署的关键路径串起来:

  • 后端是 Java Jar 应用
  • 前端是编译后的静态资源
  • 前端通过 /api/ 去访问后端接口
  • 数据库单独独立部署

也就是说,它同时具备了:

  • 独立前端
  • 独立后端
  • 独立数据库

这正是前后端分离架构最典型的雏形。

七、小结

前后端分离的重点,不是“代码放在不同文件夹”,而是职责真正拆开:

  • 前端负责页面与交互
  • 后端负责接口与业务
  • API 负责连接两者

原笔记在进入考试系统部署前先讲清这些概念,非常有必要。
因为只有理解了这套协作关系,后面看 MySQL 初始化、后端 Jar 启动和 Nginx 托管前端静态资源时,才会更容易建立整体视图。