毕业离校前帮老师简单写了一个CMS(内容管理系统)网站,用于做协会的季报展示和活动公告,连评论、注册等功能都没有。该网站使用django实现,采用了前后端不分离的方式。到公司以后因为项目组需要跟小伙伴使用vue + django的模式写了一个小系统,采取前后端分离的模式,所以简单聊聊两者的区别。
前后端不分离意味着我们看到的页面的数据、样式都是由后端渲染填充之后由浏览器展示出来的,后端需要控制前端的展示,前端与后端的耦合度很高。
拿Django的MTV举例,django在返回响应请求返回一个response的时候,其实是返回了一个渲染好的页面,具体操作如下:
前端人员负责写好模板,具体的接入调试工作由后端人员来完成;
项目耦合严重,质量不高;
由于返回的是渲染后的HTML数据,加重了网络负担,时延更大。
优势:
劣势:
浏览器访问时会先去静态文件服务器获取静态资源,并且在用户与网页交互时,会根据这些交互由浏览器执行其中的JS代码,JS代码会调用服务器提供的API接口获取相关数据,并由浏览器负责这些数据的渲染与展示工作。
换句话说,前端的代码与浏览器的结合变成了一个具有独立请求数据和处理数据的整体(类似于一个App)。
优势:
劣势:
毫无疑问,前后端分离的模式更加适应当前的开发节奏,同时也使得整体架构更加清晰;
借助JS与其它语言,前端可以实现更加丰富多彩页面效果以及数据展示,使得网页具有更加丰富多彩的展示效果。