前后端分离会为界限分的越来越明确前端步骤

前后端分离已成为互联网项目开发的业界标准使用方式,通过+的方式(也可以中间加一个)有效的进行解耦,大多数项目在java后端都是分了三层,控制层(/),业务层(/),持久层(dao)。注意:技术一定是要走在业务前面的,否则你将错过最佳的发展期哟,亲~基于上述的一些痛点,我们应该把整个项目的开发权重往前移,实现前后端真正的解耦!前后端并行开发,而不是像以前的强依赖。

前言

前后端分离已成为互联网项目开发的行业标准。解耦可以通过+的方式有效的完成(中间也可以加一个),

而前后端分离将为未来的大规模分布式架构、弹性计算架构、微服务架构、多终端服务(多客户端,如浏览器、车载终端、 ,IOS等)基地。

这一步是系统架构从猿进化到成人的唯一途径。核心思想是前端html页面通过ajax调用后端api接口,使用json数据进行交互。

前后端分离如何seo_前后端分离怎么做seo_为什么前后端分离无法seo

词汇表:

在互联网的架构中,

web :一般指这样的服务器,一般只能解析静态资源。

应用服务器:一般指能解析动态资源和静态资源的服务器,但解析静态资源的能力不如web服务器。

一般情况下,外网只能访问web服务器,内网只能访问应用服务器。

技术专业化(开发者分离)

之前的项目大多是Java程序员,父子兼备,从事前端(ajax//js/html/css等)和后端(java//等)。

随着时代的发展,很多大中小型企业逐渐开始越来越清晰的区分前端和后端的界限。前端工程师只专注于前端事务,而后端工程师只专注于后端事务。俗话说,艺术行业有专长。如果一个人什么都擅长,那么他终究不是什么都擅长。

大中型公司需要专业人才,小公司需要全才,但个人职业发展,我建议分开。

后端java工程师:

专注于java基础、设计模式、jvm原理、+原理及源码、事务隔离与锁定机制、http/tcp、多线程、分布式架构(,、)、弹性计算架构、微服务架构(+++) 、java性能优化,以及相关的项目管理等。

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

前端工程师:

关注、css3、、、、、、less/sass、gulp、、V8引擎、多线程、模块化、面向方面编程、设计模式、浏览器兼容性、性能优化等。

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

艺术行业有专业化,让你的核心竞争力越来越高。俗话说,你在生活中投入了什么,就会给你生活的反馈。而且两端的发展越来越先进,你可以为所欲为,那你终究不是什么都擅长。

通过将团队划分为前端和后端团队,双方工程师可以更加专注于各自领域,独立管理,进而打造全栈卓越团队。

原始时代(各种耦合)

曾几何时,我们的项目使用了几个后端框架,/++ jdbc//等等。大多数项目在java后端分为三层,控制层(/),业务层(/),持久层(dao)。控制层负责接收参数,调用相关业务层,封装数据,路由渲染到jsp页面。然后在jsp页面使用各种标签(jstl/el/tags等)或者手写java表达式()在后台显示数据,玩起了MVC的思路。

我们先来看这个情况:需求敲定,代码写好,测试完成,然后呢?会发布吗?

您需要使用或其他工具将您的代码输入到一个war包中,然后将这个war包发布到您的生产环境中的web容器(/////),对吧?

发布后,您需要启动您的 Web 容器并开始提供服务。这时候就可以通过配置域名、dns等方式访问你的网站了(假设你是网站)。

让我们看看,你的前端和后端代码都在那个war包里吗?包括你的js、css、图片、各种第三方库吧?

好的,在下面的浏览器中输入您的网站域名( ),然后发生了什么? (这道题也是很多公司的面试题)

我捡起来说,请找基础差的童鞋。

浏览器通过域名通过dns服务器找到你服务器的外网IP,向你的服务器发送http请求,tcp3握手后(http下面是tcp/ip),开始通过tcp协议传输数据,你的服务器拿到请求后,开始提供服务,接收参数,然后将你的响应返回给浏览器。然后浏览器会解析你通过 -type 返回的内容并呈现给用户。

我们来看看,我们先假设您的主页上有 100 张图片。这时候用户的HTTP请求好像是一次,其实不是一次。用户第一次访问时,浏览器不会有缓存,你的100张图片,浏览器需要连续请求100个http请求(有人会告诉我http长短连接的问题,不讨论这里),你的服务器需要消耗内存来接收这些请求。创建用于玩 tcp 传输(消耗服务器上的计算资源)。

重点来了,这种情况下,你的服务器压力会很大,因为页面中的所有请求都只向你的服务器请求,如果一个人没问题,如果个人并发访问(不是第一个说服务器集群,这里是单实例服务器),你的服务器能处理多少个tcp连接?你有多少带宽?你的服务器有多少内存?你的硬盘性能高吗?你能承受多少IO?您为 Web 服务器分配了多少内存?会掉吗?

因此,大中型Web应用越多,越需要解耦。

理论上你可以把你的数据库+应用服务+消息队列+缓存+用户上传的文件+日志+等放在一台服务器上,不需要玩任何服务管理,也不需要做任何性能监控,什么报警机制等等,都会乱七八糟。

但这就像你把所有的鸡蛋都放在一个篮子里,这是非常危险的。如果因为某个子应用的内存不稳定导致整个服务器内存溢出挂掉,你的整个网站就会挂掉。

如果你意外失败,而你的业务正处于井喷式发展的巅峰,那么恭喜你,你的业务成功被技术封杀,很可能会流失大量用户,后果不堪设想。

注意:技术一定要领先于商业,否则你会错过最好的发展期,亲爱的~

另外,你所有的应用程序都是耦合在一起的,相当于一块巨石。当服务器的负载能力不足时,一般采用负载均衡的方式,把服务器做成集群,这样你其实是在横向扩展。巨石,性能加速会越来越低,

你要知道,低负载的功能或模块本身没有必要横向扩展。本文的例子是你的性能瓶颈不是前端,那你为什么要横向扩展前端呢? ? 而且发布部署上线的时候,明明只改了后端代码,前端为什么要一起发布呢? ? ? (引文:《架构历险记——轻量级微服务架构》,黄勇)

正常的互联网架构必须拆机,你的web服务器集群,你的应用服务器集群+文件服务器集群+数据库服务器集群+消息队列集群+缓存集群等等。

以前的项目大部分都是用jsp作为页面层向用户展示数据,因为流量不高,所以没有这么苛刻的性能要求,但是现在大数据时代,对互联网的性能要求项目越来越高,

因此,原来的前后端耦合架构模式已经逐渐不能满足我们,所以我们需要找到一种解耦的方式来大幅提升我们的负载能力。

1.动态资源和静态资源都是耦合在一起的,服务器压力很大,因为服务器会收到各种http请求,比如对css、js、图片等的http请求。服务器一旦出状况,前后端一起玩,用户体验极差。

2.UI设计图做好后,前端工程师只负责将设计图切割成html,而java工程师需要将html设置成jsp页面,具有很高的错误率(因为经常有很多js代码),修改问题时,需要双方协同开发,效率低。

3.jsp必须运行在支持java的web服务器(例如,等),不能使用等(据说单实例http并发最高5w,这个优势应该使用),性能无法提高。

4.第一次请求jsp必须在web服务器编译,第一次运行会比较慢。

5.每次请求jsp,都是访问输出流输出的html页面,效率不如直接使用html(每次都这样,亲爱的~)。

6. jsp中有很多标签和表达式。前端工程师在修改页面时会很吃力,会遇到很多痛点。

7.如果jsp内容很多,页面响应会很慢,因为是同步加载的。

8. 前端工程师需要使用Java IDE(例如),需要配置各种后端开发环境。你考虑过前端工程师的感受吗?

基于以上一些痛点,我们应该把整个项目的开发权重往前推,实现真正的前后端解耦!

开发模式

旧模式是:

1.产品体验/领导/客户要求

2.UI设计图

3.前端工程师制作html页面

4.后端工程师将html页面设置成jsp页面(前后端强依赖,后端必须等待前端html还没能设置jsp就完成了。如果改html的话会更痛苦,开发效率也会降低。低)

5.集成出现问题

6.前端返工

7.后端返工

8.二次整合

9.集成成功

10.发货

现在的新模式是:

2.UI设计图

3.前后端约定接口&数据&参数

4.前后端并行开发(无强依赖,前后端可以并行开发,如果需求变化,只要接口&参数不变,无需修改两边代码,开发效率高)

5.前后端整合

6.前端页面调整

7.集成成功

8.投递

前后端分离如何seo_为什么前后端分离无法seo_前后端分离怎么做seo

请求方法

以前的方法是:

1.客户端请求

2.服务器端或接收请求(后端控制路由和渲染页面,整个项目开发的权重在后端)

3.调用,dao代码完成业务逻辑

4.返回jsp

5.jsp显示一些动态代码

现在的新方法是:

1.浏览器发送请求

2.直接到达html页面(前端控制页面的路由和渲染,整个项目开发的权重前移)

3.html页面负责调用服务端接口生成数据(通过ajax等,后台返回json格式数据,json数据格式代替xml简单高效)

4. 填充html,显示动态效果,解析和操作页面上的DOM。 (有兴趣的童鞋可以访问阿里巴巴等大型网站,然后按F12监控你刷新页面的情况,他的http是怎么工作的。大部分都是单独请求后台数据,使用json传输数据,而不是一个大而全的http请求返回整个页面,包括动态+静态)

新方法的请求步骤总结:

大量并发浏览器请求—>web ()—> ()—>file///

同时可以玩子模块,也可以根据业务一一拆分成小集群,为后续架构升级做准备。

前后分离的优点

1.可以实现真正的前后端解耦,前端服务器可以使用。

前端/WEB服务器放css、js、图片等一系列静态资源(你甚至可以把css、js、图片等资源放在特定的文件服务器上,比如阿里云的oss ,并使用cdn加速),前端服务器负责控制页面引用&跳转&路由,前端页面异步调用后端接口,后端/应用服务器使用(想想它作为数据提供者)以加快整体响应速度。

(这里需要用到一些前端工程框架如,,,,,)

2.找bug,可以快速定位谁有问题,不会出现踢对方球的现象。

页面逻辑、跳转错误、浏览器兼容性问题、脚本错误、页面样式等问题均由前端工程师负责。

接口数据错误、数据未提交成功、响应超时等问题,均由后端工程师解决。

双方互不干涉,前端后端是相亲相爱的一家人。

3.在大并发的情况下,我可以同时横向扩展前后端服务器。

例如淘宝首页需要2000+台前端服务器作为集群,才能承受日均上亿+的PV。

(去阿里巴巴的技术峰会,听他们说他们的web容器是自己写的,即使单个实例抗10万http并发,2000个单元也是2亿http并发,按照洪峰他们也可以预测。无限扩展,很吓人,就一个首页……)

4.减少后端服务器的并发/负载压力

除了接口之外的所有其他http请求都被转移到前端。接口的请求请参考反向代理。而且除了第一页请求外,浏览器会大量调用本地缓存。

5.不会有不可访问性。

即使后端服务暂时超时或宕机,前端页面也能正常访问,但无法刷新数据。

6.多终端共享服务。

也许你还需要有微信相关的轻应用,让你的界面完全共享。如果有app相关的服务,只要重构一些代码,还可以复用大量的接口来提高效率。 (多终端应用)

7.全部异步加载。

无论页面显示多少东西,它都不怕,因为它是异步加载的。

8.热部署,无缝升级。

支持页面热部署,无需重启服务器,前端升级更无缝。

9.提高代码的可维护性和易读性。

将前端和后端耦合起来可能非常费力。

10.提高开发效率。

前端和后端是并行开发的,而不是像以前那样强依赖。

11.提高安全性。

在中国部署证书,使用外网访问,只开放443和80端口,其他端口全部关闭(防止黑客端口扫描),内网使用http,性能和安全有保障。

12.组件化的前端代码。

前端大量的组件代码可以复用和组件化,提高开发效率并提取出来!

注意事项

1.召开需求会议时,所有前端和后端工程师都必须参加,并且需要制定接口文件。后端工程师一定要写测试用例(2维),不要让前端工程师充当你的专职测试,建议使用插件或者or,层测试用例来写。 ps:前端也能玩单元测试吗?

2.上面的接口不在java中。说白了,调用接口就是调用你里面的方法。

3.增加前端团队的工作量,减轻后端团队的工作量,提升性能和扩展性。

4.我们需要一些前端框架来解决页面嵌套、分页、页面跳转控制等功能(前面提到的那些前端框架)。

5.如果你的项目很小,或者是一个简单的内网项目,那你可以放心,不需要任何架构,但是如果你的项目是外网项目,呵呵。

6.过去,有些人使用类似于/etc的模板框架来生成静态页面。

7.这篇文章的主要目的是说jsp已经在大型外网java web项目中被淘汰了,但并不是说jsp可以完全避免。对于一些学生和朋友来说,jsp/etc。 java web基础还是需要掌握的,不然你觉得这个框架是基于什么的?

8.如果页面上有一些权限等相关验证,那么这些相关数据也可以通过ajax从接口获取。

9.对于前端和后端都可以做的逻辑,我建议放在前端。为什么?

因为你的逻辑需要计算资源进行计算,如果你把它放到后端运行逻辑,会消耗带宽&内存&cpu等计算资源,你要记住

服务器的计算资源是有限的,如果放在前端,会占用客户端的计算资源,这样你的服务器负载就会降低(高并发场景)。类似于数据校验,前后端都需要做!

10.前端需要有机制来处理后端请求超时和后端服务宕机,并显示给用户友好。

免责声明:本文来自网络用户投稿,不代表本站观点和立场。如有侵权请发送邮件至tzanseo@163.com告知本站删除,本站不负任何责任及承诺。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论