一、能够实现真正的先后端解耦,前端服务器使用Nginx。前端/web服务器放的是css,js,图片等等一系列静态资源(甚至你还能够css,js,图片等资源放在特定的文件服务器,例如阿里云的oss,病使用cdn加速),前端服务器负责控制页面引用&跳转&路由,前端页面异步调用后端的接口,后端/应用服务器使用Tomcat(把tomacat想象成一个数据提供者),加快总体相应速度。(这里须要使用一些前端工程化的框架好比nodejs,react,router,react, redux,webpack)css
二、发现bug,能够快速定位是谁的问题,不会出现相互踢皮球的现象。页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,所有由前端工程师来负责。接口数据出错,数据没有提交成功,应答超时等问题,所有由后端工程师来解决。双方互不干扰。前端
三、在大并发状况下,我二姨同时水平拓展先后端服务器,好比淘宝的一个首页就须要2000+台前端服务器作集群来扛住日均多少亿+的日均PV。(阿里的技术峰会,听他们说web容器都是本身写的,就算他单实例抗10万http并发,2000台是2亿http并发,而且他们还能够根据预知洪峰来无线拓展,很恐怖,就一个首页)。node
四、减小后端服务器的并发/负载压力。除了接口之外的其余全部http请求所有转移到前端Nginx上,接口的请求调用Tomcat,参考Nginx反向代理Tomcat,且除了第一次页面请求外,浏览器会大量调用本地缓存。react
五、即便后端服务暂时超时或者宏机,前端页面也会正常访问,只不过数据刷不出来而已webpack
六、也许你也须要有微信相关的轻应用,那样你的借口彻底能够共用,若是也有APP相关的服务,那么只要经过一些代码重构,也能够大量复用接口,提高效率。(多端应用)web
七、页面显示的东西再多也不怕,由于是异步加载。redux
八、Nginx支持页面热部署,不用重启服务器,前端升级更无缝。后端
九、增长代码的维护性&易读性(先后端耦在一块儿的代码读起来至关费劲)前端工程化
十、提高开发效率,由于能够先后端并行开发,而不是像之前的强依赖浏览器
十一、在Nginx中部署证书,外网使用https访问,而且只开放443和80端口,其余端口一概关闭(防止黑客端口扫描),内网使用http,性能和安全都有保障
十二、前端大量的组件代码得以复用,组件化,提高开发效率,抽出来!