小白前后端分离——关于意义和必要性的小便签

什么是前后端分离?

把一个网页应用的源代码分成两堆,叫做前端和后端,前端只负责给用户展示数据,后端只负责处理服务器的逻辑。

前后端分离常见误区?

前后端怎么不分离?想一想也应该是要分离的呀。

在二三十年前应用体量都不大的情况下,网页只是属于应用的一部分,让前后端分成两个团队去做,无疑是加大了工作量和成本。而且受限于终端设备的性能,那时候前端功能不够强,大部分都是依赖于后端的,前端程序员的地位很低,经常直接由后端程序员代替。

为什么要前后端分离?

思考这样一个情况:

后端程序员:我会 JSP !
前端程序员我会 Html !
后端程序员:你写得页面不对劲啊,这个数据咋不显示?
前端程序员:我这边是好的!
后端程序员:要不你自己看看?
前端程序员:你这个跟我给你的不一样啊?
后端程序员:我得把你的代码加上逻辑呀……
前端程序员:我又不懂 JSP ,你把你的代码择出来吧,我看看网页的问题……

这样的情况在前后端不分离的时候是日常,然后就导致了开发效率极低。程序员要么什么都懂(当然这样子就很难什么都精通);要么后端程序员就得等另一位程序员把页面写好再开工,然后还少不了互相甩锅。两种情况都增加了开发成本。

那怎么办呢🤔……

随着 JavaScript 的功能越来越强,前后端分离就产生了:

后端程序员:我不管你的页面了。
前端程序员:那我也不管你的逻辑了。
后端程序员:我们只需要在一开始的时候约定好接口,然后自己写自己的就好了。
前端程序员:好主意!

你可能会问……

网上类似的文章不是很多了吗,为什么还要写?

因为前几个月某人在群里问关于前后端分离的事情,我们解释了定义但是后来发现实际上他的问题是“常见误区”章节提到的问题。

但是为什么近几年前后端不分离的SSR(服务器端渲染,Server Side Rendering)又流行起来了呢?

首先,现在的服务端渲染概念,与上述二三十年前的那种直接显示页面(后端多页渲染)是完全不同的。这是网页应用发展的又一个新阶段。

以前的工作逻辑是:把 Html 文档看作一个模板,在其中加上占位符之后,由服务端填充数据,然后直接返回给客户端。以前 JavaScript 只是为了网页变得好看的一个辅助工具。

而后来,我们认为网页是单独的一个应用,很多项目都是只有网页而没有客户端了。我们向服务器发送请求拿到的是这个应用,而应用里面的数据是它自己从另一个地方获取的,获取数据是应用的运行逻辑了。现在的 JavaScript 已经能够独立开发应用了。

想想上面的开发方式有什么弊端呢?——前后端分离之后,开发的效率提高,成本降低了;但是网页的性能却下降了,因为我们再想要加载一个页面就需要走更多的流程,发送更多的请求。虽然技术的进步让终端的性能提升了,但还是敌不过代码运行效率的降低。

于是又出现了一个折中的办法,服务端渲染。它融合了前后端分离的部分优点(比如开发人员互不干扰,开发效率高),而且也有后端多页渲染的部分优点(比如SEO等)。


—— 秋雨落 2021.8.4

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注