背景
传统的Web前后端开发大多是前端将页面(HTML丶CSS丶JS)写好,之后丢给后端,让后端将页面集成到项目中去。站在开发的角度上看,对于后端来说,不仅要写后端逻辑,还得集成前端页面,而对于前端来说,不容易看到页面的真正渲染出来的样子;站在维护的角度上看,如果是在业务逻辑复杂的项目里,最怕维护的就是前后端混杂在一起的代码,因为没有约束,M-V-C每一层都可能出现别的层的代码,日积月累,完全没有维护性可言。
传统开发模式的劣势和不足:
开发出的软件响应速度慢,质量差,用户体现差。
前后端严重耦合,代码混乱,可维护性差。
研发人员前后端兼顾,开发效率低下,研发周期变长
为了解决传统开发模式中的这些病痛,前后端分离的思想便应运而生。
前后端分离
在前后端分离的开发模式中,前后端根据AJAX接口进行数据的交互,目前常见的是后端直接将数据以JSON的格式返回给前端,前端根据后端服务器返回的数据,操作DOM。后端仅返回前端所需的数据,前端负责渲染HTML页面,后端不再控制前端的效果,用户看到什么样的效果,从后端请求的数据如何加载到前端中,都由前端自己决定,后端仅仅需要提供一套逻辑对外提供数据即可,并且前端与后端的耦合度相对较低,在这种模式中,我们通常将后端开发的每个视图都成为一个接口,或者API,前端通过访问接口来对数据进行增删改查。总结一句话,后台负责提供数据,前端负责数据展示,职责分离,分工明确。
前后端分离开发的好处:
分工明确,前后端各司其职,后端专注业务逻辑和功能的实现,前端专注页面设计。
前后端并行开发,效率大大提高,页面的增加和路由的修改也不必再去麻烦后端,开发更加灵活。
一定程度上减少了前后端的沟通成本撕逼
增强代码的可维护性,应用的代码不再是前后端混合,只有在运行期才会调用依赖关系,并且分层明确,应用代码变得整洁清晰
降低服务器负载,系统性能提升,通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升