一.前后端不分离架构
1、 什么是前后端不分离
在前后端不分离的架构中,前端(用户界面)和后端(服务器端)代码都在同一个项目中,并且由同一套服务器技术(如PHP,JSP,ASP.NET等)生成。这种情况下,服务器端不仅负责处理业务逻辑,还要负责生成和返回前端的HTML页面。
2、工作原理
当用户发出一个请求(如点击链接或提交表单)时,请求首先会发送到服务器。服务器根据请求,处理相关的业务逻辑,然后根据处理结果生成HTML页面,并将这个页面发送回浏览器。浏览器接收到HTML页面后进行渲染,显示给用户。这就是为什么在前后端不分离的架构中,每次用户交互几乎都需要重新加载页面。
这个过程的关键点是,每次用户与应用交互时,都会触发完整的页面刷新和重新渲染。 这会导致性能和用户体验的问题。
3、优缺点
1】优点
开发简单直接。由于前端和后端代码在同一项目中,可以直接共享代码和数据,使得开发过程比较简单直接。
后端控制界面。服务器端负责生成HTML页面,可以在服务器端控制页面的内容和显示。
2】缺点
前后端耦合度高。前端和后端代码耦合在一起,修改起来比较麻烦,也不利于前后端的开发和测试分工。
用户体验差。每次用户交互几乎都需要重新加载页面,网络延迟和服务器处理时间都会影响到用户体验。
不利于前端技术的发展和应用。由于前端和后端不分离,很多前端框架和工具无法得到有效利用,限制了前端技术的发展。
二.前后端分离架构
1、为什么要前后端分离
引入前后端分离架构是为了解决传统前后端不分离架构中存在的一些问题,并带来更好的开发体验和性能优化。引入的主要原因如下:
更好的团队协作: 前后端分离允许前端和后端团队独立开发,各司其职,减少了彼此之间的依赖和耦合。这样可以提高团队的协作效率和开发灵活性。
提高开发效率: 分离后,前端和后端可以选择最适合自己的开发技术和工具,无需受限于特定的开发语言或框架。这有利于开发者发挥自己的优势,提高开发效率。
优化用户体验: 前后端分离可以实现异步数据加载和无需完整刷新页面,从而提供更流畅的用户体验,减少页面闪烁和加载时间。
性能优化: 由于只返回数据而不是完整的HTML页面,前后端分离减少了网络传输量,降低了服务器负载,从而提高了性能。
适应多平台: 前后端分离架构允许通过相同的后端API为不同的前端(如Web端、移动端、桌面应用等)提供服务,从而实现更好的多平台适配。
保护后端数据和逻辑: 在前后端不分离的架构中,前端直接访问后端的逻辑和数据,容易暴露后端的安全漏洞。而前后端分离通过API接口传输数据,更好地保护了后端的数据和逻辑。
总体而言,前后端分离架构使得开发更加模块化和灵活,使得不同部分可以独立优化和升级,提高了应用的可维护性和可扩展性,是现代Web开发的趋势之一。
2、什么是前后端分离
在前后端分离的架构中,前端和后端是相互独立的两个部分。前端负责用户界面的展示和交互,后端负责处理业务逻辑、数据库访问和数据处理。
在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。
在前后端分离架构中,主要有以下四部分:
1】前端开发: 前端开发人员使用HTML、CSS和JavaScript等技术来构建用户界面。他们编写前端代码,实现页面布局、交互效果等,但不处理业务逻辑和数据存储。
2】后端开发:后端开发人员使用服务器端技术(如Node.js, Java, Python等)来构建后端应用。他们负责处理业务逻辑,访问数据库,处理数据,并通过API接口提供数据和服务。
3】API通信: 前端通过AJAX等技术向后端的API发送请求,请求可以是获取数据、提交表单、进行认证等。后端将处理请求并返回JSON或其他数据格式作为响应。
4】数据交互: 前端接收到后端返回的数据后,使用JavaScript进行数据处理和页面更新。前端可以动态更新页面内容,无需刷新整个页面。
3、工作原理
在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。
4、优缺点
1】优点
性能: 前后端分离减少了完整页面刷新的次数,降低了网络传输和服务器负载,提高了性能。
用户体验: 无需完整刷新页面,前后端分离可以实现更流畅的用户体验,减少闪烁和加载时间。
团队协作: 前后端团队可以独立开发,提高了开发效率和灵活性。
技术选型: 前后端分离允许选择最适合自己的技术栈,不受限于某一种特定的开发语言或框架。
2】缺点
首屏渲染的时间长
将多个页面的资源打包糅合到一个页面,这个页面一开始需要加载的东西会非常多,而网速是一定的,所以会导致首屏渲染时间很长,首屏渲染后,就是无刷新更新,用户体验相对较好。
不利于搜索引擎的优化(SEO)
现有的搜索引擎都是通过爬虫工具来爬取各个网站的信息,这些爬虫工具一般只能爬取页面上(HTML)的内容,而前后端分离,前端的数据基本上都是存放在行为逻辑(JavaScript)文件中,爬虫工具无法爬取,无法分析出你网站到底有什么内容,无法与用户输入的关键词做关联,最终排名就低。
不能使用浏览器里面的前进后退功能
一些版本较低的浏览器对其支持度不足
5、前后端分离项目流程
前后端分离的项目流程大致可以概括为以下几个阶段:
1】需求评审与规划。产品经理召集前后端团队进行需求评审,明确业务需求和功能点。前后端团队根据需求评估各自的工作量和联调的工作量,进行开发时间的预估。
2】开发准备与接口定义。前后端团队共同商量需求中需要联调的部分,进行接口的初步交流。随后,前后端中的一方根据初步协议拟定详细的接口,并书写API文档,由另一方确认。这个过程可能需要重复,以确保双方对接口的定义没有疑问。
3】开发阶段。双方根据协商的接口进行开发。前端在开发过程中应跟进接口,并使用mock数据进行本地测试。
4】联调测试。双方各自的工作完成后,开始进行前后端的联调测试。如果在联调过程中发现问题,需要重复接口定义阶段,直至联调成功。
5】产品体验与提测阶段。将完成的需求交给产品团队进行体验,并根据反馈进行调整。之后将需求提交给测试人员进行测试,测试中发现的问题需要及时通知开发团队进行修改。
6】评审单发布与部署上线。前后端中的一人负责拟定评审单,发送给对应的领导,说明需求发布的程序、影响到的页面及业务、发布流程以及回滚方案等。在确保前述阶段都没有问题后,前后端双方进行代码的发布。发布后由测试人员在线上进行相应的测试,确保没有bug。
7】迭代优化。根据用户反馈和需求变更,持续进行优化和迭代开发。
这个过程强调了前后端团队的紧密合作和有效的沟通,确保项目的顺利进行和高质量的交付。