1.写在最前面
由于公司发展的需求,需要将现有的所有项目进行架构改造,采用前后端分离的架构。得空可以研究一下,记录一下我在学习中得心得,方法。也许不是很专业,如有出入,欢迎指正。
前后端分离的架构这在我刚入行不久,就觉得会是一个大趋势,由于当时的时间有限,没有深入的去学习这个框架。学习这个框架之前如果你对以下的技术比较熟悉,那么学习起来可能就不会太吃力。
----node.js (强大的js,应用广泛,特性是可以直接用他写一个服务端,我之前就是用这个写游戏服务器的)
----H5/CSS/Jquery(如果你没了解过Vue,那么这些对你学Vue的时候会有一定的帮助,我说的是一定的帮助,如果你了解组件化开发,可能会学的更快)
----熟悉Spring/SpringBoot(对你学习后端开发很有帮助)
当然你以上如果都不会的话,建议先去学习一下。
2.前后端分离的架构分析
我们先看看基本的架构,比如我们普通的web项目是这样的,前端跟后端是在一起的,也就是集中式的项目。
前后端分离,顾名思义就是后端跟前端分开了。变成了两个项目,后端人员专注于后端开发,前端人员专注于前端开发。这很像java中的业务分层。
分工明细,并行开发,这样的结果只有一个,效率的提升。
假设有两个开发人员,一个是前端,一个是后端,如果他们采用集中式的项目结构来开发,两个人必须拉取同一套代码开发,前端或者后端需要测试时,都需要等对方将功能开发完整才可以进行测试。
如果他们采用前后端分离的方式,就可以实现各自拉各自的代码,前端如果要测试的话,就算后端接口没有开发完成,前端也是可以进行模拟测试的(使用moke),后端开发完接口直接发布即可,发布完继续开发。
以此我们用这个思维方式往下延申,既然开发分离了,交互方式分离了,代码结构分离了,部署也是分离的。
然后在此想想分离以后的项目有什么变化?
1.前端代码与后端代码在不同的工程目录或不同的代码库,前端不需要知道后端的技术架构,后端也不需要知道前端的技术架构,前后端都有充分的自由采用各种技术来进行系统的性能优化。
2前端通过HTTP请求获取数据,后端按约定的数据格式提供接口,一般为REST风格的接口。
3.前后端项目可以部署在不同的服务器上,提高系统的可维护性以及容灾能力。
4.就是上面讲的提升开发效率的问题。
采用亲后端分离也会出现这样一个问题,----跨域访问的问题,这个问题在spring4.2版本及以上有很好的解决。
后面的学习中这是一个重要的点。
总结,前后端分离的架构可以给开发和应用性能带来很可观的效率,也是目前很多公司项目架构转变的主流。接下来的路线我会从前端开始入手,然后是后端,最后前后端的整合。