理解前后端分离
前面的课程我们讲了,前后端分离,就是页面的渲染在前端浏览器执行,后台只负责接收和响应数据。
这里要注意的是,前后端分离的意思并不是前后台代码分开部署。
前台应用单独部署方案
可以将前台应用部署在任意一个 Web 服务器中:
- Tomcat
- Nginx
- NodeJs Express
- Apache Http Server
注意各个服务器中的配置,在前台应用启动 History 路由功能的时候,要适配 History API。对于 Web 应用要配置 base-href;并且服务器要重写 URL,将所有的路由请求转发到 index.html 页面,以 Nginx 的配置为例:
location /frontend-demo {
root /opt/web-apps;
index index.html;
try_files $uri $uri/ /frontend-demo/index.html;
}
前端应用和后端应用不在同一个服务器中的时候,后台应用需要开启 CORS (Cross-origin resource sharing) 支持。
前台应用打包进 Spring Boot 应用
Spring Boot 直接嵌入了 Tomcat, Jetty 或者 Undertow,不需要部署 war 包就可以直接启动 Web 应用。
默认情况下,Spring Boot从类路径中名为 /static(或 /public 或 /resources 或 /META-INF/resources)的目录服务静态内容。
frontend-maven-plugin 可以将 Node 和 npm 项目打进 jar 包,Spring Boot 项目把打成的前端 jar 包直接引入进来。