您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
程序员该如何正确理解前后端分离?
后端,代码,开发人员程序员该如何正确理解前后端分离?
发布时间:2016-12-08加入收藏来源:互联网点击:
程序员该如何正确理解前后端分离?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
我喜欢这样的问题。
如果是问“什么是正确的前后端分离”,我还真不敢回答,生怕自己的理解有什么偏差;但是问怎么“理解前后端分离”,那我可以结合自身的工作,谈谈我对前后端分离的理解,也欢迎大家提出不同的理解。
我07年参加工作就是做企业级项目的开发,那时候的一些项目都只有一个包,没有什么代码规范,业务逻辑散落在各处,甚至是JSP中直接访问数据库并做业务处理。
后来逐渐有了一些规范,页面就是页面,代码就是代码,很多项目开始使用Ajax框架。
发展的更进一步,后端代码有了分层,cotroller/service/dao,可能每个项目分层策略不同(三层和两层居多),每层的叫法不同(cotroller还是action),数据从页面到最后访问数据库,需要走到多个分层中。
不过到了此阶段,在企业级项目的开发过程中,Java程序员依然要兼顾前后端的开发,所以前端页面的样子嘛,达不到美观的程度,也就是能用。
继续发展,很多项目开始变成了前后端分离。对于前后端分离的定义我是这样理解的:
页面是页面,代码是代码,但是他们在一个包中,这个肯定不能算前后端分离;
前端页面一个程序包,后台代码一个程序包,两个包都需要部署到Tomcat上,前端调用后台的接口;我认为这个也不是严格的前后端分离,但是我觉的这样做也没有问题;
如果前端只有HTML文件,放到HTTP服务器上,浏览器只访问获取这些HTML就好了,数据是从后台程序提供的接口获得;这样才算是前后端就分离了。
前后端分离有很多的好处:前端开发和后端开发可以各司其职,约定好接口之后就可以并行开发;后端接口可以复用,如果项目同时有电脑网页端、移动网页端、APP端等多个入口的时候,后端可以只有一个;
带来好处的同时,也会有一些缺点,例如:增加了架构的复杂性,如果技术能力不足的团队,可以考虑半分离(例如我们部门都是企业级应用,都没有前端开发人员);如果是面向互联网的应用,需要搜索引擎抓取,就需要服务器端渲染;另外前后端交互的接口,也需要花时间和精力设计。
最后,是否需要使用前后端分离,还需要根据项目的实际情况决定。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
回答于 2019-09-11 08:43:50
我刚开始做开发的时候目标就是做一个全栈工程师,啥是全栈工程师呢?就是前端,后端,数据库,运维等样样精通,
不管是一开始的HTML代码直接写在JAVA代码里,还是后来的MVC框架,把业务层和显示层分开,页面的代码和后端业务功能全部耦合在一个项目里边,开发人员不仅要处理业务方面的逻辑,还需要控制页面的展示,甚至于页面颜色等等非业务方面的交互东西!
最主要的是如果只是页面需要改变个简单的样式,还得把整个应用全部部署一遍,这显然是极不合理的!
所以前后端的分离极有必要,让前端来控制与用户的交互,而后端来实现业务罗,虽然对外作为一个整体,但是前端和后端分别部署,让前端开发人员和后端开发人员能做自己更加擅长的东西!
前后端的分离通常使用后端服务系统提供接口与前端进行数据交互,前端负责显示和接受用户数据,现在用的最多的前后端分离方案是后端微服务+node.js(互联网大厂都这么用)!
node.js将js代码不像是在浏览器一样解释执行,而是放在了服务端进行环境部署执行,同时node.js使用事件驱动,非阻塞IO的方式能同时支持大量的访问!
前后端分离之后,就存在跨域(域名不同,协议不同等等)的问题,解决的方式比较多,有nginx配置转发,CORS配置响应头等等!
总之,前后端分离就是为了解放前后端的开发人员,让开发人员能更加专一的进行擅长的工作,前端负责交互,后端负责业务处理,最终形成一个整体的应用系统!
以后全栈工程师这个词只怕是会越来越远咯!
回答于 2019-09-11 08:43:50
谢谢邀请!
程序编写的前后端分离有很多好处,既能带来开发效率的提升,也能带来执行效率的提升,另外对程序的部署、安全性都会有一定的帮助,所以前后端分离一直是Web开发领域一个很重要的内容。
随着Web开发技术的不断发展,前后端分离从设计到技术都有了较大的变化。早期Web开发基本上采用的是一种耦合式开发,也就是说前端技术和业务逻辑是耦合在一起的,典型的代表就是JSP+JavaBean的开发方式,如图:
后来提出了MVC的解决方案,JSP专注于显示,业务逻辑采用Servlet+JavaBean来完成,这种开发方式流行了很长一段时间,经历了从EJB到Struts再到Spring,一直到Ajax技术的出现,如图:
再后来提出了HTML+JavaScript的前端解决方案,后端采用微服务的方式来实现,这样做的好处是前后端彻底分离了,前端页面也不再与后端服务部署在同一个服务器中了,而是采用了分开部署的方式。这种部署方式增强了Web应用的健壮性和稳定性,也极大的提升了访问效率,比如目前前端页面大部分都部署在Nginx服务器上。
对于程序员来说,理解前后端分离的开发方式要能通过代码实现出来,不仅要对开发技术有所了解,更应该知道每个技术的应用场景和性能特点。前后端的分离也能带来开发效率的提升,前端团队可以更专注于呈现的效果,而后端开发团队可以更关注于处理的效率。
我做Web开发时间比较久,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
上一篇:减肥最快的方法有哪些?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |