随着不一样终端(Pad/Mobile/PC)的兴起,对开发人员的要求愈来愈高,纯浏览器端的响应式已经不能知足用户体验的高要求,每每须要针对不一样的终端开发定制的版本,为了提高开发效率,先后端分离的须要愈来愈被重视,后端负责业务/数据接口,前端负责展示、交互逻辑,同一份数据接口,可用于多个终端。html
传统的先后端:前端
后端是跟数据库跟服务器打交道的,前端是跟浏览器打交道的。但彷佛他们的职责在之前甚至于如今都并不明确,虽然前端是跟浏览器打交道,可是最终浏览器拿到的页面是服务器经过模板生成的一个临时静态页面而已。因此,实际上后端也掺和进来了,由于他要处理模板。固然,通常传统上的开发协做模式有两种:数据库
一种是前端先写一个静态页面,写好后,让后端去套模板。静态页面能够本地开发,也无需考虑业务逻辑只须要实现View便可。不足是还须要后端套模板,这些前端代码后端须要浏览一遍,以避免出错。编程
另外一种协做模式是,前端直接去写模板,这样作的问题在于,前端编写过程当中很依赖与后端环境,若是当后端没写完的状况下,前端几乎无法干活。json
模板引擎后端
模板引擎是至关古老的东西了,如今能看到的不少后端编程语言其实都是基于模板引擎的。但这种语言级的模板引擎其实很难让开发者满意。之前写 ASP 的时候以为用程序把数据库查询出来的数据填入页面中是一件很痛苦的事情。不是写出一堆凌乱的标签就是程序里作一堆字符串拼接。若是再考虑上内容的安全性,要作各类过滤和转义,简直会让人奔溃。先后端分离浏览器
先后端分离的故事得从 Ajax 提及。在 Ajax 流行起来后,你们都开始了「无刷新」之旅。当时大部分网站都是以连接形式跳转的时候,本身使用「无刷新翻页」以为已经很先进了。后来无刷新翻页也渐渐开始烂大街,百度搜一下能够搜出一坨东西,因而就开始考虑全页面的无刷新操做。渐渐地「Web 接口」这种东西出现,可是此时的「接口」其实主要仍是直接输出 HTML,并无考虑结构化之类的东西单页模式安全
单页模式是先后端分离的一种应用。而单页应用最主要的特色就是局部刷新,这经过前端控制路由调用AJAX,后台提供接口即可以实现,并且这样的方式用户体验更加友好,网页加载更加快速,开发和维护成本也下降了很多,效率明显提高。