前后端分离的话的界面到底长什么样?-八维教育

”前后端分离“已经成为互联网项目开发的业界标杆,通过+(也可以中间有个Node.数据,市面上有这样的技术来实现这个功能吗?框架,让其实现前后端分离架构,让开发人员将精力集中在业务上,而并非那些具体的技术细节。5、前后端分离意义大吗?1、可以实现真正的前后端解耦,前端服务器使用。

1、前言

“前后端分离”已成为互联网项目发展的行业标杆。通过+(或中间的Node.js),有效地进行了解耦。而前后端分离将为未来的大规模分布式架构、弹性计算架构、微服务架构、多终端服务(多客户端,如浏览器、车载终端、、IOS , ETC。)。前后端分离(解耦)的核心思想是:前端Html页面通过Ajax调用后端API,使用Json数据进行交互。一般外网只能访问Web服务器,内网只能访问应用服务器。

2、为什么前后端分开

一般公司的后端开发人员直接负责前端的工作,同时实现API接口和开发页面,两者相互切换。 ,并根据不同的url动态拼接页面,这也大大增加了后台的开发压力。前后端工作分布不均。不仅开发效率慢,而且代码难以维护。

如果前后端分离,可以很好的解决前后端分工不均的问题,更多的交互逻辑可以分配给前端进行处理,而后端可以专注于自己的工作,比如提供API接口进行权限控制和计算工作。前端开发者可以用它搭建自己的本地服务器,直接在本地开发,然后通过一些插件将api请求转发到后台,这样就可以完全模拟线上场景,与后台解耦。前端可以独立完成与用户交互的整个过程。两者可以同时启动,无需相互依赖。开发效率更快,分工比较均衡。

3、MVC到前后端分离

MVC是经典的设计模式,全称-View-,即-View-。

其中,模型是用来封装数据的载体。比如在Java中,一般用一个简单的POJO(Java)来表示,它本质上是一个普通的Java Bean,包含一系列的成员变量及其/方法。对于视图来说,更侧重于展示,也就是说,视图决定了界面的样子。在Java中,可以通过JSP作为视图,也可以通过纯HTML显示,后者是目前的主流。 模型和视图需要由控制器粘合在一起。例如,当用户发送一个 HTTP 请求时,请求会首先进入控制器,然后控制器会获取数据并将其封装为模型,最后将模型传递给视图。显示。

综上,MVC的交互流程如下图所示:

Web实现前后端分离解析

我们输入一个AJAX请求,输出的是JSON数据,市面上有这样的技术可以实现这个功能吗?答案是 REST。

如果将浏览器端作为前端,将服务器端作为后端,上述改进的MVC模式可以简化为如下前后端分离模式:

Web实现前后端分离解析

可以看出,使用REST服务,前端重在界面展示,后端重在业务逻辑,分工明确,职责明确。

4、了解 Rest 架构

REST 本质上是一种使用 URL 访问资源的方法。众所周知,URL就是我们平时使用的请求地址,它包括请求方法和请求路径两部分。较常见的请求方法是 GET 和 POST,但在 REST 中提出了其他几种类型的请求方法。有六种类型:GET、POST、PUT、、HEAD、.

特别是前四个,分别对应CRUD的四种操作(—、添加、删除、修改、搜索),例如GET(检查)、POST(添加)、PUT(更改)、(删除) ) ),这正是 REST 与 CRUD 一起工作的方式!需要强调的是,REST 是“面向资源的”。这里所说的资源,其实就是我们常说的领域对象。在系统设计过程中,我们经常使用领域对象对数据进行建模。

REST是一种“无状态”的架构模式,因为客户端可以随时向服务器发送请求,最终返回自己想要的数据,当前请求不会受到上次请求的影响。影响。也就是说,服务器将内部资源发布为 REST 服务,客户端通过 URL 访问这些资源。这不就是SOA所倡导的“面向服务”的思想吗?因此,REST也被认为是一种“轻量级”的SOA实现技术,因此在企业级应用和互联网应用中得到了广泛的应用。

让我们举几个例子来简要描述一下 REST 请求:

Web实现前后端分离解析

可以看出请求路径是一样的,但是请求的方式不同。所代表的业务运营也不同。比如请求 //1 有 GET、PUT 三种不同的请求方式,分别对应三种不同的业务操作。

虽然 REST 看起来很简单,但实际上我们经常需要提供一个 REST 框架来实现前后端分离的架构,让开发者可以专注于业务,而不是那些具体的技术细节。

5、前后端分离有意义吗?

5.1、网站前端的变化比后端频繁很多,意义重大。

5.2、网站还是原来的开发模式,数据逻辑和表示逻辑混在一起,意义重大。

5.3、网站的前端团队和后端团队分属两个领导团队,技能差别很大,意义重大。

5.4、本站前端效果华丽/跨设备兼容性要求高,意义重大。

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

随着时代的发展,越来越多的大中小公司开始越来越分前后端,很明显前端工程师只关心前端的东西,后端工程师只关心后端的事情。俗话说,艺术行业有专长。如果一个人什么都擅长,那么他终究不是什么都擅长。

6.1、后端工程师:

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

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

6.2、前端工程师:

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

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

7、耦合时代

曾几何时,我们的项目使用了几个后台框架,/++ jdbc//等等。

大部分项目在java后端分为三层,控制层(/),业务层(/),持久层(dao)。

控制层负责接收参数,调用相关业务层,封装数据,路由渲染到jsp页面。

然后在jsp页面使用各种标签(jstl/el/tags等)或者手写java表达式()在后台显示数据,玩转MVC的思路。

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

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

伞端粘连腹腔镜分离术_seo关键字用那个符号分离_前后端分离怎么解决seo

发布后,您需要启动您的 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应用越多,越需要解耦。

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

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

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

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

另外,你所有的应用程序都是耦合在一起的,相当于一块巨石。当服务器的负载能力不足时,一般采用负载均衡的方式,将服务器做成集群,这样你实际上在水平扩展巨石,性能加速就会越来越低。要知道负载低的函数或模块本身不需要横向扩展。这篇文章的例子就是你的性能瓶颈不在前端,那为什么要横向扩展前端呢? ? ?

7.1、开发模式

7.1.1、老办法是:

7.1.2、新的方式是:

7.2、请求方式

7.2.1、老办法是:

7.2.2、新的方式是:

8、前端分离的优势

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

8.2、找bug,可以快速定位问题所在,不会出现互相踢球的现象。前端工程师负责页面逻辑、跳转错误、浏览器兼容性问题、脚本错误、页面样式等问题。接口数据错误、数据未提交成功、响应超时等问题,均由后端工程师解决。双方互不干涉,前后端是相亲相爱的一家人。

8.3、在大并发的情况下,我可以横向扩展前后端服务器。多少亿+日均pv。

8.4、减少后端服务器的并发/负载压力。接口以外的所有http请求都转给前端。接口的请求请参考反向代理。而且除了第一页请求外,浏览器会大量调用本地缓存。

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

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

8.7、页面不管显示多少东西都会显示,因为它是异步加载的。

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

8.9、增加代码的可维护性和可读性(前后端耦合的代码读起来相当吃力)。

8.10、提高开发效率,因为前后端可以并行开发,而不是像以前那样强依赖。

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

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

9、备注

9.1、召开需求会议时,前后端工程师都要参加,接口需要制定文档,后端工程师要写测试用例( 2 维度),不要让前端工程师充当你的全职测试,为推荐的插件或层编写测试用例。 ps:前端也能玩单元测试吗?

9.2、上面的接口在java中是没有的。说白了,调用接口就是调用你里面的方法。

9.3、加重前端团队的工作量,减少后端团队的工作量,提高性能和扩展性。

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

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

9.6、有人使用类似/etc的模板框架来生成静态页面。

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

9.8、如果页面上有一些权限等相关检查,那么这些相关数据也可以通过ajax从接口获取。

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

因为你的逻辑需要计算资源进行计算,如果你把它放在后端运行逻辑,它会消耗带宽、内存、cpu等计算资源。你要记住服务器的计算资源是有限的,如果放在前端,会占用客户端的计算资源,所以你的服务器负载会下降(高并发场景)。

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

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

发表评论

登录后才能评论