前后端分离的意思是:前后端分离并非仅仅只是一种开发模式,而是一种架构模式,前后端分离已成为互联网项目开发的业界标准使用方式,通过【nginx tomcat】的方式,也可以中间加一个nodejs,有效的进行解耦。
【相关学习推荐:前端视频教程】
前后端分离的意思是:
一.前后端混合的开发模式(ssr)
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)
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)
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的全栈开发变成一个稳定,让大家都能接受的东西还有很多路要走。创新之路不会止步,无论是前后端分离模式还是其他模式,都是为了更方便得解决需求,但它们都只是一个“中转站”。前端项目与后端项目是两个项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员。前端只需要关注页面的样式与动态数据的解析及渲染,而后端专注于具体业务逻辑。
云服务器在哪买最好续费续错机器-其他问题租云存储服务器腾讯云服务器空间费用域名怎么注册?什么样的域名容易注册视频怎么压缩不影响画质 不改变清晰度压缩视频的方法网站首页如何设计能更吸引人云计算的服务器租赁需要多少钱