前后端分离,千万别再搞错了! 你是小阿巴刚入职的全栈程序员。所谓全栈, 那便是全干, 整个网站项目之中, 后端的开发由你一人负责, 前端的开发同样由你一人负责。在用户开启一个网站的情况下, 对于那个能够被直观看到的、具备可交互操作特性的界面而言呀, 它即为前端。当用户点击操作按钮之后, 触发的操作验证, 是由后端来完成的, 触发的数据查询, 也是由后端来完成的, 触发的业务逻辑处理, 同样是由后端来完成的, 这些种种“看不到”的操作, 皆由后端来完成。本文对应视频版令你所运用的开发技术, 乃是比你岁数还要大的JSP, 其具备的特性是, 将前期HTML网页代码, 与后端Java代码, 混合在一起去撰写。刚开始项目代码不多的时候你写的很舒服。但是, 随着项目规模不断增大, 越来越多的同事参与到这个项目的开发工作当中, 你也逐渐察觉到了几个问题。代码呈现出混乱的状态, 难以进行维护, 前端代码与后端代码彼此纠缠在一起, 这种情况既不利于对代码进行阅读, 又不利于去排查 Bug。进行团队协作时会碰到困难, 当你着手改变前端样式之际, 同事却在更改后端逻辑, 常常出现正当改动之时就产生冲突的情况。对人员有了更高要求, 其中开发人员需要同时去学习前端技术和后端技术, 在今天要写 CSS 来调整样式到了明天又得写 SQL 去查询数据库, 以至于根本就忙得应付不过来。部署效率处于低下状态, 这是因为前端与后端被写在了一起, 哪怕只是对按钮颜色作出更改, 都需要重新进行编译, 进而部署整个项目。接连遭受这些问题的影响, 项目开发的效率呈现出日益降低的态势, 然而 Bug 的数量却愈发增多, 你承受着巨大的压力, 汗水如同雨点般纷纷落下。老板察觉到了你毛儿的艰难处境, 便为公司聘请了一位新的技术导师, 这位技术导师被称作“全栈冤种”的鱼皮。鱼皮看了看你的项目摇了摇头连前后端分离都不做么你疑惑地问前后端分离没听说过。这般时候, 你的那位名为阿土申的同事插言道, 我是知晓的我们当下把前端静态文件放置于文件夹之中, 将 JSP 代码放置于 jsp 文件夹里头, 如此这般难道不就是前后端分离了?鱼皮皱眉那只是文件夹分离不是真正的前后端分离。阿土申不服鱼皮老狗那你说说用什么技术才算是前后端分离鱼皮微笑着说道, 前后端分离并非是某一种特定的技术, 而是属于一种架构思想。瞧瞧你们当下的项目, 当用户访寻网站之际, 是由后端服务器获取请求, 接着于后端探寻数据并拼接至 HTML 网页模板里头, 塑造出完备的网页, 最终再回馈给用户。显然后端承受了太多而如果改造为前后端分离你不明觉厉可是这样做有什么好处呢那个鱼皮, 朝着你先前给罗列出来的那些问题, 这般说道: 前端和后端相互分离, 恰恰是专门用来处理这些令人头疼的痛点状况的1最初是, 代码分离, 把前端代码以及后端代码实施毫无保留的分离, 最为理想的状况是, 成为两个彼此独立自主的项目。2代码被分离之后, 便能够实现开发分离, 前端程序员与后端程序员能够同时开展工作, 彼此间不会产生干扰。3也能够部署分离, 即前端项目与后端项目分别独立实施部署, 哪怕后端遭遇问题或者逻辑有所修改, 前端也用不着再次去进行部署。4当历经前三者之分离后, 于此状下我们即能够达成前后端分开的实质, 这实质便是, 将职责区分离, 使专长适配专长之事, 让各自得以施展特长, 如此一来整体效率必定会更趋提升增高。自然, 最为关键重要的是, 一旦假若后端出现了相关问题状况, 那么前端便无需承担责任过错。听着鱼皮口若悬河, 你两眼发亮, 前后端分离如此显著, 是否还能够提高网站性能呢?鱼皮晃了晃脑袋表示: 并非一定如此, 并且有时候前后端断开连接或许会更迟缓原因在于, 当用户访问网站之际, 浏览器得先载入前端页面, 接着运行脚本去请求后端数据, 这相较于传统的由后端直接返回完整页面而言多了一回网络请求。然而也不要气馁, 在前后端分离了以后, 前端能够单独开展优化, 后端同样能够单独开展优化, 更加具备灵活性, 没问题。首先, 你点了点头, 接着表示原来如此, 然后指出看来前后端分离的主要目的在于提升开发效率以及代码维护性, 而非提升性能。接着, 你引领团队着手重构项目, 应用 React 框架对前端整个界面予以重新编写, 之后将编译生成的静态文件进行打包, 再部署至 CDN 加速网络之上而后端专门负责提供 API 接口, 并向外部返回 JSON 数据, 被部署于独立的服务器当中, 彼此之间不会产生相互影响。几个月后你感受到了前后端分离的优势在前端与后端的对接期间, 偶尔会出现斗嘴乃至打架的情况, 然而你凭借自身总结出的, 一套前后端分离的实战经验, 将其予以完美解决。你兴奋地对鱼皮说前后端分离也太爽了吧鱼皮笑着问那我问你前后端分离一定比不分离更好么你不假思索那当然了你看看这盛世岂不如你所愿鳘鱼的皮晃了晃脑袋讲道: 小阿巴呀, 你务必得记着, 不存在最为出色的架构情况, 仅仅有着相对而言更为适配的架构现象是否去运用前端与后端分开的方式, 这是需要依据团队项目所达到的规模进展, 项目实际展现出来的需求状况, 团队具备的技术各个方面相应能力等这些综合起来再给予判定的。你我明白了抛开实际场景谈架构都是耍流氓~使用了 React 框架就能确定必然是前后端分离吗, 这仅是最后要问的一个问题?朋友说说你的看法吧。