有一门实践课又要写WEB项目了。。。这门课的老师的工程能力还是比较强的,他也提出了一些很前沿的需求。例如,前后端分离,RESTFUL接口,SPA等等。。。然后我惊讶的发现这些看起来高大上的名词其实早就在我之前的项目中遇到过,只不过我不知道它们竟然还是挺高端的概念。
首先,我们要思考的问题是,为什么要前后端分离?
先来看看传统的方式是怎样的,回想起大二的时候,我们在web课上学的jsp,它的本质是用户从浏览器端发出请求,服务器接收请求,然后用JAVA(你应该知道JSP本质上还是会对应着JAVA类的吧)拼凑一个页面返回给浏览器,在拼凑的时候相应的数据也被及时插在网页里了,浏览器再呈现给用户。我们可以看到在传统的流程中,用户的浏览器只是发送了请求,然后将返回的网页渲染了一下。。。而服务器却干了很多事情,他不仅要监听用户的请求,查询数据库获得相应的数据,还要利用数据和JSP去组装页面再返回给浏览器端。由此我们可以看到,不前后分离,服务器压力好大啊!
而做了前后端分离之后事情变成了怎样呢?用户从浏览器端发出请求,这时候服务器先把静态的页面返回给浏览器,浏览器获得页面后开始渲染页面,在渲染页面的时候它大都会通过ajax请求去请求数据。这时候服务器再接受请求,进行相应的逻辑处理和数据查询,然后直接把查到的数据通过某种格式(通常是JSON)返回给页面。然后继续渲染页面,但是页面上数据的填写就变成了JAVASCRIPT的活。这里就能发现,前后分离后,前端做的事更多了,浏览器会使用更多的用户资源。而服务器压力骤减(这很棒),因为它只需要做两件事,返回静态页面或是处理逻辑后返回数据,是的,只需要返回数据,然后JavaScript(现在各种前端框架是主流,例如AngularJS,Vue.js,React.js)负责填充数据。
在前后分离的时候我们可以把服务器分成两个虚拟部分去看待,简单的绘制了一个示意图如下:
在理解了前后端分离的概念后,再来说道说道RESTFUL接口,这其实是一种web项目的好的规范,是一种理念,是一种设计。你完全不知道它的话也能做web项目,这也是我第一次接触呢。
它宣传的理念就是把HTTP请求的method利用起来。之前我们可能只会通过get方法和post方法去向服务器端发送请求,可是其实方法很多,restful接口要求我们一种方法/动作只能做一件事。最基本的对应关系是这样的
get->请求数据
post->新增数据(也可用于更新)
put->修改数据
delete->删除数据
行吧,那为啥我们就得用它呢?用我们原来所熟悉的那套不好吗?这个问题我还没有得到自身的理解,如果在实际开发的过程中我感受到了好处,我会回来更新这段文字哟。提出REST这个概念的大神是Roy Thomas Fielding在他2000年的博士论文中提出的。乖乖,这哥厉害的不行,参与了HTTP协议的缔造,也参与Apache的软件的开发。他本人在论文中提到REST(Representation State Transfer 表现层状态转移)是他想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。
最后,再多提一句SPA,即single page application,单页面应用
wikipedia 上给出了这样的定义------A single-page application (SPA) is a web application or web site that fits on a single web page with the goal of providing a user experience similar to that of a desktop application. 翻译过来就是,单页面应用是那种提供给用户像在使用原生APP(比如PC上的应用,手机上的应用)的用户体验的网页应用。我感觉最近特别火的微信小程序不就是这个意思吗?可能你URL里的地址从没变过,但是你已经把你想做的事都做了。感觉SPA是大趋势啊,因为谷歌不也推过一种概念吗?电脑上只需装上chrome然后,从浏览器内就可以使用各种应用了。
如果有收获的话可以扫码侧面的二维码打赏一下哟,感谢您的鼓励~