电子创意设计网站,张家口高新区做网站,官方网站建设 在线磐石网络,临安营销型网站建设前言#xff1a;分离模式 对前后端分离研究了一段时间#xff0c;恰逢公司有一个大项目决定尝试使用前后端分离模式进行#xff0c;便参与其中。该项目从2016年初立项至今#xff0c;平平稳稳得度过#xff0c;但也涌现出越来越多的问题#xff0c;绝对不是说前后端分离模…前言分离模式 对前后端分离研究了一段时间恰逢公司有一个大项目决定尝试使用前后端分离模式进行便参与其中。该项目从2016年初立项至今平平稳稳得度过但也涌现出越来越多的问题绝对不是说前后端分离模式不好而是很多公司在尝试前后端分离的时候没有做好充分得准备。 网上对前后端分离介绍的文章已经屡见不鲜接下来本人用一点粗浅的言语也谈谈这块献丑了。
为什么要分离 如果只问“前后端分离的意义大么”这是废话因为从软件架构的角度 Web 的前后端从一开始不就一直是分离的么而且 browser、server 可能将永远分离下去。 为了了解这个问题我们有必要先了解一下 Web的研发模式演变关于这个题材下面这篇博文说得不错这边就不做搬运工了。 https://github.com/lifesinger/blog/issues/184 我们不能“为了分离而分离”而应该“为了真正理解web开发、为了更好完成需求而分离”。
前后端分离的误区 1、前端人员配备是否充足 由于所在公司以往项目采用传统开发风格即以后端MVC为主的开发模式前端人员仅仅提供静态html页面其余工作皆由后端开发人员完成。采用前后端分离模式可以减后台负担加快研发效率当然前提是前端能做好的话。以往只需要提供静态页面的前端人员在前后端分离模式中要负责项目的viewcontroller部分即除了静态页面还需要负责页面的所有交互代码、以及nodejs与视图层以及后端API的交互工作无疑增加了前端人员的学习成本在没有足够知识和人才储备的情况下只能让前端人员加班加点。结果是大量前端人员离职PS做这么多事工资总得加吧 2、前后端职责分配 很多公司认为采用前后端分离之后前后端只需要通过指定API进行交互即可前端负责页面渲染Nodejs负责路由分配后端提供API。忽视了大量关键工作职责分配和细节处理没有相应文档规定缓存机制、图片上传下载、数据校验、语言国际化等等并没有出具相应信息。另外大量忽视了nodejs层的作用仅仅把nodejs当成一个路由中转这一方面也是对nodejs技术的不熟悉导致的其实nodejs能负责很多事除了复杂业务逻辑处理和数据操作由Java 负责大量工作完全可以在nodejs层处理。PS还是基础不够导致的 3、后端API是否Restful风格 很多公司采用了前后端分离模式后后端API仍然采用以往的传统风格这是不合理的Restful风格的API应该是前后端分离的最佳实践。ResultFul推荐每个URL能操作具体的资源,而且能准确描述服务器对资源的处理动作通常服务器对资源支持get/post/put/delete/等用来实现资源的增删改查。前后端分离的话这些api-url是对接的桥梁采用resultFul接口地址含义才更清晰、见名知意。PS用了Spring4.x 竟然还不用rest风格说不过去啊 4、前后端协作模式 前后端分离后无论是API接口的对接还是测试工作都涉及到前后端人员的沟通很多公司采用前后端分离后前后端协作模式配合力度底互相等待开发效率低下反而不如传统的开发模式。例如当后端 API 没有编写完成时前端无法进行调试这就导致了前端会被后端阻塞的情况。其实像这种互相等待的模式需要改进 Mock Server 可能可以解决一些问题。
如何前后端分离 怎么做前后端分离大方向就是 后端专注于后端控制层Restful API 服务层 数据访问层 前端专注于前端控制层Nodejs 视图层 本人认为的前后端分离模式应该是这样当然这不一定正确 1、项目设计阶段前后端架构负责人将项目整体进行分析讨论并确定API风格、职责分配、开发协助模式确定人员配备设计确定后前后端人员共同制定开发接口。 2、项目开发阶段前后端分离是各自分工协同敏捷开发后端提供Restful API并给出详细文档说明前端人员进行页面渲染前台的任务是发送API请(GET,PUT,POST,DELETE等)获取数据jsonxml后渲染页面。 3、项目测试阶段API完成之前前端人员会使用mock server进行模拟测试后端人员采用junit进行API单元测试不用互相等待API完成之后前后端再对接测试一下就可以了当然并不是所有的接口都可以提前定义有一些是在开发过程中进行调整的。 4、项目部署阶段利用nginx 做反向代理即Java nodejs nginx 方式进行。
编后语 从经典的JSPServletJavaBean的MVC时代到SSMSpring SpringMVC Mybatis和SSHSpring Struts Hibernate的Java 框架时代再到前端框架KnockoutJS、AngularJS、vueJS、ReactJS为主的MV*时代然后是Nodejs引领的全栈时代技术和架构一直都在进步。虽然“基于NodeJS的全栈式开发”模式很让人兴奋但是把基于Node的全栈开发变成一个稳定让大家都能接受的东西还有很多路要走。创新之路不会止步无论是前后端分离模式还是其他模式都是为了更方便得解决需求但它们都只是一个“中转站”。 走过的“中转站”可能越来越多但是不要渐行渐远才是。