简单了解动静分离和前后端分离

一、前端和后端的概念(怎么区分是前端还是后端)

什么是前端? 这又可以分解成几个小问题。
1.JS是前端么? 2.只要用JS写的,都是前端么? 3.只要是前端工程师写的,都是前端么?4.大前端就是指的用JS语言写的前端,哪怕它是运行在服务器那一端么? 5.App算前端么? 6.Html+CSS算前端么? 7.小程序算前端么? 8.ReactNative算前端么?
通常情况下,我们说的前端,都是指浏览器这一端,浏览器这一端,又在通常情况下,都是用JS来实现的,所以又会引申为,用JS写的大部分程序都是前端,包括App,小程序,H5等。而NodeJS出现之后,用NodeJS写的后端部分,也会被人归类为前端,为了区分之前的前端,就给他们起了一个名字,叫做“大前端”。

但,这种以语言为分界点去区分前后端,真的合理么?
在过去,我们是不分前后端的,无论是Java还是JS,全都是一个人来写。
到底是什么原因让我们开始区分前后端了?

第一个,是可以并行开发。前后端的进度互不影响,在过去,前后端不分离的情况下,前端的工作量相对较少,一个前端可以对四个后端。可以理解为,前端花了一周时间写好了静态页面,只需要调几个Ajax接口,不需要路由,也不需要渲染,所以他可以把时间继续在下一个项目里。
第二个,是成本问题。在过去,后端的成本还是比前端要高一些。同样的工作,如果能拆给两个人做,一个成本高一点,一个成本低一点,能接受。
第三个,CSS太难了。JS还好,和后端语言在对技能的训练上相差不大,可是CSS是什么鬼?记住那么多的属性,和Hash算法有关系吗?

所以才分成了前后端,而Html+CSS+JS,都是在浏览器端执行,统一称之为前端。而Java,C,Python,PHP这些可以运行在服务器端的,统一称之为后端。
所以前后端的定义,不应该是以语言来定义,而是应该以它的运行环境,如果是在服务器端,就应该被称之为后端,代表着你看不见,摸不着。
而如果运行在用户端,就应该被称之为前端,代表你是可以看得到的。

二、动静分离

将动态请求和静态请求区分访问。
tomcat本身处理静态效率不高,还会带来资源开销.所以使用动静分离,将静态由Nginx处理, 动态由PHP处理或Tomcat处理。
Nginx根据客户端请求的url来判断请求的是否是静态资源,如果请求的url包含jpg、png,则由Nginx处理。
如果请求的url是.php或者.jsp等等,这个时候这个请求是动态的,将转发给tomcat处理。总结来说,Nginx是通过url来区分请求的类型,并转发给不同的服务端
动静分离是指,静态页面与动态页面分开不同系统访问的架构设计方法。
动态资源 jps servlet spring mvc 与静态资源 js html img css 不会部署到同一个服务器。

为什么要动静分离

三、前后分离

为什么要前后端分离

参考博文:https://www.cnblogs.com/xixinhua/p/10265426.html

猜你喜欢

转载自www.cnblogs.com/jasonboren/p/12005577.html
今日推荐