理解先后端分离

理解先后端分离

[toc]前端

为何要作先后端分离,它到底有什么好处?

先后端的分离也实现了先后端架构的分离,带来的好处有:vue

  • 整个项目的开发权重往前移,实现真正的先后端解藕,动态资源和静态资源分离,提升了性能和扩展性。jquery

  • 前端静态化ajax

    • 前端有且仅有静态内容,再明确些,只有HTML/CSS/JS。
    • 其内容来自于彻底静态的资源而不须要任何后台技术进行动态化组装。
    • 前端内容的运行环境和引擎彻底基于浏览器自己。
  • 后端数据化数据库

    • 后端能够用任何语言,技术和平台实现。
    • 遵循一个原则:只提供数据,不提供任何和界面表现有关的内容。
    • 统一API接口,接口彻底能够共用。
    • 提供的数据能够用于任何其余客户端(如IOS,安卓,PC,微信小程序等)。
    • 经过一些代码重构,就能够大量复用接口,提高效率。
  • 平台无关化小程序

    • 前端3大技术(HTML/CSS/JS)自己就是平台无关的。
    • 后台链接部分的本质是实现合适的RESTful接口和交互Json数据,就这2者而言,任何技术和平台均可以实现。
    • 先后端交给不一样的人来编写,明确划分职责,发现bug的时候能够快速定位。
    • vue.js等框架编写前端时,会比以前写jquery更简单快捷。
  • 架构分离化后端

    • 前端架构彻底基于HTML/CSS的发展和JS框架的演变,因为前台是纯静态内容,大型构架方面能够考虑向CDN方向发展.
    • 后端构架几乎能够基于任何语言和平台的任何解决方案,大型构架方面, RESTful Api能够考虑负载均衡;而数据,业务实现等能够考虑数据库优化和分布式。
    • 在大并发状况下,能够同时水平扩展先后端服务器。
    • 即便后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已,固然如今通常是服务器集群,少有出现这种现象。
  • 先后端流量大幅减小。微信小程序

    • 减小后端服务器的并发压力,除了接口之外的其余全部http请求所有转移到前端服务器上。
    • 页面再也不是全局刷新,而是异步加载,局部刷新,减轻压力。
  • 表现性能的提升api

    • 页面性能,第一次获取的确会有些损失。
    • 后续使用这个页面,性能优点就彻底体现了,页面的绝大部份内容都是本地缓存直接加载,远程获取的仅仅是1-2个10K的内容,其加载时间百毫秒内,这和本地页面几无区别,其前端加载和响应速度获得很是大的提升。
  • 安全性方面的集中优化浏览器

    • 前端静态化之后,一些注入式攻击在分离模式下被很好的规避。
    • 然后端安全问题集中化了,主要考虑处理RESEful接口的安全。
    • 安全架设和集中优化变得更明确和便利。

实现的一些表现

  • 先后端人员双方约定好接口的数据格式,
  • 好比:前端须要调用一个用户信息的接口,数据格式为{name:"tielemao"}。那么,后端人员只须要告诉他一个接口url(如:http://www.tielemao.com/api/userInfo),而且将这个接口返回前端想要的数据便可,至于后端人员怎么实现这个接口,前端人员并不关心!
  • 前端页面用ajax解析url,获取数据进行页面端的处理,而后再按照上述地址返回给后端。
  • 前端人员要用这个接口来作什么,后端人员一样不须要关心!双方都只专一于本身须要实现的业务逻辑。

RESTful风格的API

RESTful风格的API是先后端分离的最佳实践。

  • RESTful推荐每一个URL能操做具体的资源。
  • 能准确描述服务器对资源的处理动做。
  • 一般服务器对资源支持get/post/put/delete/等,用来实现资源的增删改查。
  • 先后端分离的话,这些api-url是对接的桥梁,采用restful接口地址,含义才更清晰、见名知意。

by:铁乐与猫

参考: http://www.javashuo.com/article/p-hpevdyvq-ga.html

相关文章
相关标签/搜索