一、什么是前后端分离¶
原笔记对前后端分离的解释非常清晰:
- 静态资源部分属于前端
- 动态功能部分属于后端
- 两者通过 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 托管前端静态资源时,才会更容易建立整体视图。