一、什么是前后端

1、前端:泛指内容展示和与用户交互的部分(客户端)

① 内容展示:在网页上能看到的图片、文字、视频、数字等信息

② 交互:用户在页面上通过点击按钮、输入文字等等动作,对网站提供数据输入,然后前端对用户的输入做出响应,比如更新页面上的内容

HTML:网页内容

CSS:视觉效果

JS:用户交互

2、后端:泛指控制软件输出的部分 [开发数据访问服务](服务端)

前端可以通过调用后端的服务对数据进行增删查改

二、为什么要分家

一开始前后端是没有分家的,因为当时的web应用,没有那么复杂,访问量也没有那么大,服务端直接将页面渲染出来展示给用户也没有什么压力,当时的工程也侧重于后端。

比如JSP,在jsp文件中,杂糅着HTML、JS、JAVA、JSTL、EL等多种标签和语言。当业务逻辑和架构不复杂的时候,这样做其实没什么问题,但是业务一旦发展起来,这种意大利面条式的代码毫无设计可言,不同层级的逻辑耦合严重,难以迭代和维护,而且一旦JSP文件多了起来,那么在运行时将会有大量的servlet对象驻留在内存中,影响性能

这个时期开发人员需要吃透整套技术栈,但随着技术的发展和需求的不断升级,解决问题的难度越来越大,所以前端不能像以前那样零散的分布在整个系统框架中了,前端也需要实现工程化、模块化、系统化,jsp被淘汰了。

前后端分离是一种架构模式,说通俗点就是后端项目里面看不到页面(HTML),后端给前端提供接口,前端调用后端提供的REST风格接口就行,前端专注写页面和渲染(JS/CSS/各种前端框架);后端专注写代码就行。前后端分离的核心:后台提供数据,前端负责显示。

前后端分离意味着,前后端之间使用 JSON 来交流,两个开发团队之间使用 API 作为契约进行交互。从此,后端选用的技术栈不影响前端。当后台开发人员选择 Java 的时候,我可以不用 JSP 来编写前端页面,继续使用我的 Vue 又或者 React。而我使用 Vue 时,也不影响后台使用某一个框架。

为了适应技术和业务发展的需求,为了解耦的更彻底,也为了程序员们能更好的专精于某一项具体的业务,前后端分离就成了不得不进行的任务与趋势。

前后端的追求

后端应该追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。

前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。