(给前端大全加星标,提升前端技能)
作者:山河远阔
blog.csdn.nt/wixin_/articl/dtails/
一、前言”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Nod.js),有效地进行解耦。并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。
前后端分离(解耦)的核心思想是:前端Html页面通过Ajax调用后端的RstFulAPI并使用Json数据进行交互。
注:
一般只有Wb服务器才能被外网访问,应用服务器只能内网访问。
二、为什么前后端分离一般公司后端开发人员直接兼顾前端的工作,一边实现API接口,一边开发页面,两者互相切换着做,而且根据不同的url动态拼接页面,这也导致后台的开发压力大大增加。前后端工作分配不均。不仅仅开发效率慢,而且代码难以维护。
而前后端分离的话,则可以很好的解决前后端分工不均的问题,将更多的交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,比如提供API接口,进行权限控制以及进行运算工作。而前端开发人员则可以利用nodjs来搭建自己的本地服务器,直接在本地开发,然后通过一些插件来将api请求转发到后台,这样就可以完全模拟线上的场景,并且与后台解耦。前端可以独立完成与用户交互的整一个过程,两者都可以同时开工,不互相依赖,开发效率更快,而且分工比较均衡。
三、从MVC到前后端分离MVC是一种经典的设计模式,全名为Modl-Viw-Controllr,即模型-视图-控制器。
其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(PlainOrdinaryJavaObjct)来表示,其本质是一个普通的JavaBan,包含一系列的成员变量及其gttr/sttr方法。对于视图而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样子,在Java中可通过JSP来充当视图,或者通过纯HTML的方式进行展现,而后者才是目前的主流。模型和视图需要通过控制器来进行粘合,例如,用户发送一个HTTP请求,此时该请求首先会进入控制器,然后控制器去获取数据并将其封装为模型,最后将模型传递到视图中进行展现。
综上所述,MVC的交互过程如下图所示:
也就是说,我们输入的是AJAX请求,输出的是JSON数据,市面上有这样的技术来实现这个功能吗?答案是REST。
REST全称是RprsntationalStatTransfr(表述性状态转移),它是RoyFilding博士在年写的一篇关于软件架构风格的论文,此文一出,威震四方!国内外许多知名互联网公司纷纷开始采用这种轻量级的Wb服务,大家习惯将其称为RESTfulWbSrvics,或简称REST服务。
如果将浏览器这一端视为前端,而服务器那一端视为后端的话,可以将以上改进后的MVC模式简化为以下前后端分离模式:
可见,有了REST服务,前端