🚄

前后端分离

Created
Dec 29, 2022 03:09 AM
Tags
前端
简介

b站codesheep说的前后端分离

不能只从技术栈去解释什么是前后端分离。
例如回答:某样技术,某个框架。什么Ajax异步请求,vue react 组件化框架。接口规范,API接口数据的约定。

1.从源头上说起,如何产生

前端由后端兼顾。例如JSP就是一个典型的前后端,耦合在一起的 ,套模板。
页面不复杂,到后来信息多,前端页面复杂起来。

2.高内聚,低耦合。

而vue react 是解耦具体的实现。
前后端分离是工程化,项目管理的问题。

3.技术层面

前端工程化框架,大家都遵守一套体系去进行约束性的开发。代码的复用。例如一些UI框架。
工具化,包管理器。
可演进,可迭代

4.实施

设计,开发,测试,部署。

设计定接口

独立开发,模拟数据
一套接口,多端使用

开发

前端:前端页面,跳转,展示,输入,传参,数据响应。
后端:保证数据接口的提供,数据格式,检验,异常情况,数据一致性的问题还有一些权限问题。

部署上线

前端塞到后端的项目里面,实际上是后端部署。
持续发布Jenkins,一键部署
前端也应该有。
问题来了:
  • 什么是JSP
    • 就是模板引擎,使用java语言编程,写在HTML页面?
    • 正解:它使用JSP标签在HTML网页中插入Java代码。
  • 前端一键部署,持续发布
视频中的自动化部署,就是本地推送到远程代码仓库(第三方github,由GitHub与服务器链接,服务器拉取代码)这个过程
构建打包依旧是由本地操作。
打包构建+部署 是两个步骤。
而这个博客和Netflix 的自动化部署是,充当了服务器+GitHub的角色。
(拉GitHub代码,包括代码发生变化时,到它哪里部署)

写的比较好的内容

再谈前后端分离开发和部署
前后端分离开发已成为业界的共识,但分离的同时也带来了部署的问题。传统web模式下,前端和后端同属一个项目,模板的渲染理所当然由后端渲染。然而随着node的流行,以及webpack的模块化打包方案,让前端在 开发阶段 完全有能力脱离后端环境:通过本地node启动一个服务器,搭配Mock数据,马上就可以进行业务开发了。 但是到了 部署阶段,问题也就显现出来:前端最后打包出来的js,css以及index.html,到底放在哪里?静态文件js,css或者图片,我们还可以在CI阶段上传到cdn服务器上,但是最后的html模板 index.html 一定需要放在一个服务器上,然而这个服务器到底由前端还是后端维护? 如果html模板由前端维护,那么前端就需要自己使用一个静态服务器:提供 HTML的渲染和 API 接口的转发。常见的单页应用,也是推荐使用Nginx进行部署。 使用Nginx部署,这里又分两种情况: 静态资源完全由Nginx托管,也就是js,css和index.html放在同一个dist目录里。在这种情况下,webpack的publicPath一般不用特别设置,使用默认的/即可。 静态资源上传CDN,Nginx只提供index.html。在这种情况下,webpack的publicPath要设置成cdn的地址,例如://static.demo.cn/activity/share/。但这又会引发一个问题,由于qa环境,验证环境,生产环境的cdn地址通常不同,为了让index.html可以引入正确的静态文件路径,你需要打包三次,仅仅为了生成三份引用了不同路径的html(即使三次打包的js内容完全一样) server { listen 80; server_name localhost; location / { root /app/dist; # 打包的路径 index index.html index.htm; try_files $uri $uri/ /index.html; # 单页应用防止重刷新返回404,如果是多页应用则无需这条命令 } location /api { proxy_pass https://anata.me; #后台转发地址 proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; }
再谈前后端分离开发和部署
1)SPA项目。这类项目中不存在HTML模板的概念,所有的HTML实体内容均由JavaScript在浏览器下生成。所以SPA项目中可以将html文件作为静态文件处理。
2)HTML模板由服务器端部署的项目。这类项目最终的HTML模板需要与服务器端代码一同打包部署。由于静态文件必须由HTML引入,为了避免“套模板”,开发阶段前端工程师直接编写HTML模板更有利于快速开发和问题定位。
3)大前端项目。这类项目中前端工程师负责与客户端相关的所有文件,包括静态文件与HTML模板,这是最理想的模式。