• 技术文章 >web前端 >前端问答

    什么是前后端分离

    coldplay.xixicoldplay.xixi2020-08-24 11:03:35原创21800

    前后端分离的意思是:前后端分离并非仅仅只是一种开发模式,而是一种架构模式,前后端分离已成为互联网项目开发的业界标准使用方式,通过【nginx+tomcat】的方式,也可以中间加一个nodejs,有效的进行解耦。

    【相关学习推荐:前端视频教程

    前后端分离的意思是:

    一.前后端混合的开发模式(SSR)

    274d2933f997efa3c6a584e39ab8274.png

    1.SSR的优势

    1、更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。

    2、更快的内容到达时间 (time-to-content),特别是对于缓慢的网络情况或运行缓慢的设备。无需等待所有的 JavaScript 都完成下载并执行,才显示服务器渲染的标记,所以你的用户将会更快速地看到完整渲染的页面。通常可以产生更好的用户体验,并且对于那些「内容到达时间(time-to-content) 与转化率直接相关」的应用程序而言,服务器端渲染 (SSR) 至关重要。

    3. 流程:

    1)客户端给服务器发送请求,服务器返回页面的html和数据(模板引擎)。

    2.SSR的局限

    1.服务端压力较大

    本来是通过客户端完成渲染,现在统一到服务端node服务去做。尤其是高并发访问的情况,会大量占用服务端CPU资源;

    2.开发条件受限

    在服务端渲染中,只会执行到componentDidMount之前的生命周期钩子,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制;

    3.学习成本相对较高

    除了对webpack、React要熟悉,还需要掌握node、Koa2等相关技术。相对于客户端渲染,项目构建、部署过程更加复杂。

    二.衰弱前端+后端分离(利用ajax)

    e541296a9743023198d039891d88a5d.png

    1.优势

    前端不会嵌入任何后台代码,前端专注于HTML、CSS、JS的开发,不依赖于后端。自己还能够模拟Json数据来渲染页面。发现Bug,也能迅速定位出是谁的问题

    2.局限

    1)JS存在大量冗余,在业务复杂的情况下,页面的渲染部分的代码,非常复杂;

    2)在Json返回的数据量比较大的情况下,渲染的十分缓慢,会出现页面卡顿的情况;

    3)SEO( Search Engine Optimization,即搜索引擎优化)非常不方便,由于搜索引擎的爬虫无法爬下JS异步渲染的数据,导致这样的页面,SEO会存在一定的问题;

    4)资源消耗严重,在业务复杂的情况下,一个页面可能要发起多次HTTP请求才能将页面渲染完毕。可能有人不服,觉得PC端建立多次HTTP请求也没啥。那你考虑过移动端么,知道移动端建立一次HTTP请求需要消耗多少资源么?

    3.流程

    1、打开web,加载基本资源,如CSS,JS等;

    2、发起一个Ajax请求再到服务端请求数据,同时展示loading;

    3、得到json格式的数据后再根据逻辑选择模板渲染出DOM字符串;

    4、将DOM字符串插入页面中web view渲染出DOM结构;

    三.组件化开发前端+后端分离(SPA)

    7b31ffaedf86d20c1e4c44301deb5dc.png

    1.优势

    1.提升页面切换体验

    2.降低切换时间

    3.易于部署&前后端分离

    4.但是也带来一系列性能问题:

    2.局限

    1.初始加载脚本较大

    2.首屏空白时间较长

    3.页面返回时,数据被动重新拉取

    3.流程

    1)浏览器请求服务器端的NodeJS;

    2)NodeJS再发起HTTP去请求JSP;

    3)JSP依然原样API输出JSON给NodeJS;

    4)NodeJS收到JSON后再渲染出HTML页面;

    5)NodeJS直接将HTML页面flush到浏览器;

    总结:

    从经典的JSP+Servlet+JavaBean的MVC时代,到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架时代,再到前端框架(KnockoutJS、AngularJS、vueJS、ReactJS)为主的MV*时代,然后是Nodejs引领的全栈时代,技术和架构一直都在进步。虽然“基于NodeJS的全栈式开发”模式很让人兴奋,但是把基于Node的全栈开发变成一个稳定,让大家都能接受的东西还有很多路要走。创新之路不会止步,无论是前后端分离模式还是其他模式,都是为了更方便得解决需求,但它们都只是一个“中转站”。前端项目与后端项目是两个项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员。前端只需要关注页面的样式与动态数据的解析及渲染,而后端专注于具体业务逻辑。

    以上就是什么是前后端分离的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:前后端分离
    上一篇:设计页脚让网站更具有竞争力的方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php服务器如何做前后端分离?• javascript之ssm+vue前后端分离框架整合实现• PHPCMS是前后端分离吗?• 前后端分离用什么技术?
    1/1

    PHP中文网