【其他】前后端不分离开发过程及要点
阅读: 385 回复: 1

发布于:2021-5-6

问题描述

本问题旨在请教前后端不分离开发相关的问题。具体涉及到的疑问主要有以下几点:

①前后端各自的开发语言

②前端开发语言利弊分析

③开发过程(流程,前后端配合,驱动重心为前端还是后端)

④前后端开发人力占比及各时间阶段任务量

⑤分离式开发与不分离开发对比,主要想问一下开发者的体验和效率对比(比如以开发我们的主网站为例)



以上是我对前后端不分离开发想要了解的问题,感谢各位的解答!

解决方案

我很幸运,自己经历过前后端不分离的代价,才知道前后端分离有多么的好,今天就带着这几个疑问,我们认真分析下。


前后端各自的开发语言

目前市面上比较主流的前后端开发语言组合: php(laravel) + vue , java(spring-boot, spring-cloud) + vue , php(laravel) + react, java (spring-boot, spring-cloud) + react , 当然还有比较老的前端库,jquery,zepto等等当然还有 python作为服务端开发的,至于什么语言无所谓因为只需要定义好规则即可, 当然 目前比较流行的restfull风格的api基本都是做前后端分离开发的,spring-boot,spring-cloud就是最好的案例, 在早其的时候,我们没有前后端分离,那时候可能会用 ssh(struts + spring + habernate) 当然如果不分离通常后端都会提供一套脚本来专门做模板渲染

例如:jsp,php,asp,velocity 其原理也很简单,就是比如你把html模板写到jsp页面中这里面会包含部分java代码用作动态数据的逻辑处理,最终用户每次访问jsp页面的时候,java服务端都会把数据处理好,然后读取这个jsp页面将数据填充进去,最终返回一个静态的html包含数据的字符串给用户进行展示。


前端开发语言利弊分析

现在前端主流的开发框架主要有: angular,react, vue,由于一些历史原因某些企业尚未从jquery迁移到主流框架。这三大主流框架可谓是各有千秋,如果要说他们的利弊那太多了,我们就简单说几个。react的单项数据流方便排查问题,只有数据改变才可以引起视图改变,方便我们预期执行的结果,但是react的渲染性能不佳,一个组件的渲染会导致所有子组件跟着渲染,当然你可以在钩子函数中阻止这一点,大家都知道react使用jsx来编写dom这样极大增强了他的灵活性,然而vue更为简单,模板更接近html的写法,很多东西vue都封装好了,但是排查问题相对比较麻烦,正是他这种高度封装性导致的,angular 1.x的设计特别重,性能不佳,主要体现在脏检查机制上,但是在ng2以上性能非常良好。 纵观这3大框架,都有其丰富的社区以及组件库,这使得他们能够被人们喜欢的最大亮点

所以在做技术选型的时候我们需要考虑几个要点:

1.  框架的使用度是否高。

2.  框架的维护粒度是否给力,团队是否牛叉。

3.  框架的社区是否庞大。

4.  框架的用户是否庞大,方便招聘。

5.  框架的技术文档是否齐全等等。

6.  框架的体积以及性能对比哪个良好

所以至于一个东西的优劣我们要从放放面面进行对比方可。


开发过程(流程,前后端配合,驱动重心为前端还是后端)

前后端不分离的情况下大致的开发过程为:

1.  前端通过设计稿完成html模板以及交互,样式的编写。

2.  服务端设计数据库,完成业务功能。

3.  前端将编写好的模板交给后端开发人员,后端开发人员在给定的前端模板中编写视图逻辑代码

4.  模板套用完成以后,前端开发人员验收,进一步完成js的数据交互逻辑

5.  由前端人员和后端人员共同联调验收对方的功能是否正确。

6.  交付测试人员测试。

在此过程中,整个开发过程还是相对偏向于后端,因为后端在完成业务功能以后还要参与,前端数据

展示的视图逻辑代码的编写。


前后端开发人力占比及各时间阶段任务量

首先我们在谈论人员占比的时候主要还是由公司高层决策,当前业务的复杂度,是重后端还是重前端,以及整个业务的发展阶段而定。 比如淘宝在前期开发的时候主要都是后端,那时候基本没有前端工程师这个角色,前端代码都是由后端完成的,随着业务的壮大,后端人员逐渐很难把关注点分散到前端或者后端,有句话说的好,专业的事情还是由专业的人来完成比较好,所以在后来阿里才成立了专门的ued团队专门做前端的工作,服务端只需要完成服务端的业务即可,接下来就是套前端完成的demo 这个开发过程和周期还是相对较长的,毕竟这里面的合作模式重在沟通。

 

分离式开发与不分离开发对比,开发者的体验和效率对比

如果分离式开发不是主流,那么今天大家也不会都这么干了,那当然是比不分离好太多。

1.  分离不仅仅是技术上面的解耦,更多的是人员和责任上的解耦,任务可以明确的分配给不同端来专注完         成,彼此之间的沟通仅在与接口的联调与约束。

2.  既然专业的事情由专业的人来做,效率和开发者的体验自然不言而喻。

3.  分离后各自专注各自领域的发展及钻研的更深,使得各自领域都会涌现出更多的大牛。

4.  好处有不好的也会有,让两端的开发人员思维仅仅被局限在自己的领域,缺乏全栈思维,前端

    和后端在遇到彼此领域的问题时显得力不从心,从而解决这种问题的效率会降低,需要双方配合完

    成,而非独立完成。 

录屏实操

录屏暂未发布,请耐心等待

发布于:2020-7-20 1楼#

感谢解答!对前后不分离开发有了大概的了解,尤其是开发过程,是我没经历过的开发模式!