先后端的分离模式

图片描述
早期的web开发是不分前端后端的。
互联网进入Web2.0时代以后,大量网站从纯展现型网站演变成相似桌面软件的Web应用,网站的前端也变的愈来愈复杂, 慢慢就造成了这样一个单独的职业。随着先后端分离,前端各类框架层出不穷,前端的能力也愈来愈大,工做量跟后端相比也愈来愈平衡甚至更多。html

为何要分离?
咱们不能“为了分离而分离”,而应该“为了真正理解web开发、为了更好完成需求而分离”。前端

先后端分离的误区?
一、前端人员配备是否充足?
  因为所在公司以往项目采用传统开发风格,即之后端MVC为主的开发模式,前端人员仅仅提供静态html页面,其他工做皆由后端开发人员完成。采用先后端分离模式能够减后台负担,加快研发效率,固然,前提是前端能作好的话。以往只须要提供静态页面的前端人员,在先后端分离模式中要负责项目的view+controller部分,即除了静态页面,还须要负责页面的全部交互代码、以及nodejs与视图层以及后端API的交互工做,无疑增长了前端人员的学习成本,在没有足够知识和人才储备的状况下,只能让前端人员加班加点。结果是大量前端人员离职(PS:作这么多事,工资总得加吧!)node

二、先后端职责分配?
  不少公司认为采用先后端分离以后,先后端只须要经过指定API进行交互便可,前端负责页面渲染,Nodejs负责路由分配,后端提供API。忽视了大量关键工做,职责分配和细节处理没有相应文档规定,缓存机制、图片上传下载、数据校验、语言国际化等等并无出具相应信息。另外,大量忽视了nodejs层的做用,仅仅把nodejs当成一个路由中转,这一方面也是对nodejs技术的不熟悉致使的,其实nodejs能负责不少事,除了复杂业务逻辑处理和数据操做由Java 负责,大量工做彻底能够在nodejs层处理。(PS:仍是基础不够致使的!)nginx

三、后端API是否Restful风格?
  不少公司采用了先后端分离模式后,后端API仍然采用以往的传统风格,这是不合理的,Restful风格的API应该是先后端分离的最佳实践。ResultFul推荐每一个URL能操做具体的资源,并且能准确描述服务器对资源的处理动做,一般服务器对资源支持get/post/put/delete/等,用来实现资源的增删改查。先后端分离的话,这些api-url是对接的桥梁,采用resultFul接口地址含义才更清晰、见名知意。(PS:用了Spring4.x 居然还不用rest风格,说不过去啊)web

四、先后端协做模式?
  先后端分离后,不管是API接口的对接仍是测试工做,都涉及到先后端人员的沟通,不少公司采用先后端分离后,先后端协做模式配协力度底,互相等待,开发效率低下,反而不如传统的开发模式。例如:当后端 API 没有编写完成时,前端没法进行调试,这就致使了前端会被后端阻塞的状况。其实像这种互相等待的模式须要改进, Mock Server 可能能够解决一些问题。json

如何先后端分离?
怎么作先后端分离?大方向就是后端

  后端专一于:后端控制层(Restful API) & 服务层 & 数据访问层;
  前端专一于:前端控制层(Nodejs) & 视图层api

  本人认为的先后端分离模式应该是这样,固然这不必定正确:缓存

  一、项目设计阶段,先后端架构负责人将项目总体进行分析,讨论并肯定API风格、职责分配、开发协助模式,肯定人员配备;设计肯定后,先后端人员共同制定开发接口。服务器

  二、项目开发阶段,先后端分离是各自分工,协同敏捷开发,后端提供Restful API,并给出详细文档说明,前端人员进行页面渲染前台的任务是发送API请(GET,PUT,POST,DELETE等)获取数据(json,xml)后渲染页面。

  三、项目测试阶段,API完成以前,前端人员会使用mock server进行模拟测试,后端人员采用junit进行API单元测试,不用互相等待;API完成以后,先后端再对接测试一下就能够了,固然并非全部的接口均可以提早定义,有一些是在开发过程当中进行调整的。

  四、项目部署阶段,利用nginx 作反向代理,即Java + nodejs + nginx 方式进行。

参考
课程分享:

直播时间:2018.07.15 晚8:00~10:00pm
新前端能力课堂以前后端分离实战或者加入企鹅群:707871733 领取资料

相关文章
相关标签/搜索