前言
目前,web项目前后台分离是一个趋势,前后台分离能尽量减少耦合,加快开发效率。
为什么要分离?
那传统的开发是怎么个耦合法呢,本人有和人一起做过项目,当时分配到前端做开发。与其说是前台开发,不如说美工,就是设计界面并实现而已,没有数据,事件也不好写。只能写差不多了,然后交给后台人员去测试。如果自己要测试的话,必须了解后台,至少能把后台服务搭起来。顺利的话,可能一会儿就好了,但是要是出了点bug,或是其他毛病,可能需要花上大把的时间去解决。但是,这些工作是没必要的,换句话说,是对开发进度来说是没必要的。另一方面呢,后台开发人员,拿到界面,要做测试,要渲染。如果后台开发人员不了解js这些东西,或者说了解不是太深的话,就容易发生js,css乱作一团的情况。而且,可能还会插足界面设计。多有不便。
怎么分离?
这里面那前后台如何分离法呢,后台只负责数据处理,提供接口,不再负责界面的渲染,就是再也不需要看到html,css,js东西了。而前台,不再只是一些简单网页文件,而是组件化,工程化,看起来更像是一个项目。那他们怎么通信呢?通过ajax请求及json数据进行通信。如图:
(本图片来源于网络)
这里提一下,json对象呢,是js的原生对象,前端肯定是没问题的。为什么要引入json的原因就是,后台的java对象,前台是识别不了的。必须要转成它能识别的样子。
前端在开发的时候,它的测试可以不用依赖于后台,比如说webpack就有自己的测试服务器,它的端口同样是8080,不过没关系的,如果你的tomcat占用了8080,它会自动启用8081或者其他的端口。厉害的是,ajax请求可以跨域请求,也就是说后台和前台都不一定要打包在一起发布才能访问,只要你后台打开tomcat,我直接访问你的IP,就能获取到后台的数据。当然,tomcat允许跨域需要一定的配置,就是在web.xml里添加一个tomcat自带的过滤器即可。这样如果前后台都是自己开发的话,你就可以在8081端口发请求到8080端口获取后台数据。
这里给出一张图,就是通过vue-cli,也就是脚手架搭起来的前台工程的文件目录结构。