为什么要叫“前后端分离”、“服务端渲染”

327 天前
 x77

从通讯意义上来说,“前后端分离”恰恰是对前后端的通讯做了更好的设计或组织,也就是说前后端连接变得更为有序而不是分离。

从正经的渲染( render )概念上来说,渲染是通过程序及图形硬件把数据以图像的形式呈现,就浏览器渲染 HTML 来说,浏览器最终需要吧 HTML 上的文本、图片、音频按照 HTML 的排版在屏幕上渲染出网页图像。

客户端理解前端概念里的“分离”却分离,“渲染”却没渲染,不明白前端为什么要起容易产生歧义的叫法,为什么不用“WebUI”、“服务端生成 HTML”等更为准确(我觉得更准确)更容易表示本质的叫法。

6079 次点击
所在节点    程序员
41 条回复
fd9xr
327 天前
因为 中文不是编程的基础语言
codehz
327 天前
主要还是类似 react 这样,把 vdom 变成 dom 的过程叫做 render 吧(所以没有 dom ,直接到一个 stream 里,也可以算 render )

render 翻译成渲染其实是一些翻译上的问题,本身和“图形渲染”并没有那么强的关联,字典里查的话,更偏向于“把某样东西转换成另一个东西或者状态”的义项,和图形渲染稍微有些联系的另一个义项则是给予 /提供 /表达 /表演这个含义
所以 render 放在这里我认为没啥问题,当然翻译上确实可以用更好的词汇)
https://react.dev/reference/react-dom/server
westoy
327 天前
SSR 不就是 Server Side Rendering 么

再往上追溯, 服务端的大量模板库生成 response 内容一般都定义成 render 方法
cmdOptionKana
327 天前
因为人类语言不是设计出来的,而是生长出来的。

你认为一种表达方法更好,你可以自己使用,也可以倡议大家去用,但最终多数人如何表达,你很难控制。就连国家语言规范都要根据多数人的错误表达方式去修改规范,让规范符合多数人的习惯。

也就是说,人类语言并非绝对理性的,也不是精雕细琢优化出来的,而是很混乱的,充满不合理性的。
paradoxs
327 天前
实际上叫什么都可以, 没有一个强制要遵守的规范。

和食品安全、建筑安全、医疗安全 之类实打实的有刚性要求的不一样, 软件这些东西,能跑起来就行。
fds
327 天前
因为最早就是 服务端生成 HTML ,浏览器每个请求都是找后端重新刷一个完整的 html 。
后来 ajax 兴起后,浏览器除第一次下载页面外,后面可以直接找服务端要数据,生成一部分新页面,而不用取完整的 html 。这就出现了“前后端分离”,前端主要管理界面,后端管理数据。
后来浏览器第一次下载的程序太大,然后前端还得自己生成界面,速度不如直接让服务器生成快,所以又让服务器端预先渲染一下,降低浏览器压力,但之后的交互还是浏览器自己更新页面,后端主要传数据,跟最开始的“服务器生成完整 html”还是有本质的不同的。
achira
327 天前
别咬字眼你的生活会愉快许多。
fkdog
327 天前
更合适的说法应该是展示层和业务逻辑层的分离.
以前有很多 UI 展示技术, JSP 、JSF 、Struts 、Freemarker 、velocity 之类的服务端模板框架.
实现起 ui 实在是太笨重了.
后台干脆就服务端应用只吐 json, UI 层渲染交给纯前端开发团队处理.
至于服务端渲染, 也只是为了解决前几年 SPA 应用 seo 的问题.
taotaodaddy
327 天前
别咬字眼你的生活会愉快许多。+1
x77
327 天前
@achira
@taotaodaddy

不用从一个贴文臆测别人生活与不愉快吧。
taotaodaddy
327 天前
没写完就发出来了...很同意 4#回答,很精炼但是很单位: 语言是生长出来的.
啰嗦两句:
从现状看,同一个词是存在多种用途不同含义的.渲染不是只有计算机图形学这么一个定义,在 web 领域,渲染这个词也是存在的,和计算机图形学的渲染,不是一个意思;在中文这里延伸一下: 渲染气氛,它也用"渲染".
从生长看,很多时候,用“服务端生成 HTML”这种冗长的定义,不符合人类的习惯,人们会借用一个已经存在的很短并周知的单词来指代它,这种情况太多太多了,且不限于计算机领域.
UP 的问题其实是属于语言进化和传播领域的问题.
taotaodaddy
327 天前
@x77 抱歉...
x77
327 天前
@taotaodaddy 没事
akira
327 天前
计算机学的这些还好,大部分是翻译问题, 我们无法要求所有从事翻译工作的人都能做到 信达雅。
大部分人都能接受的翻译也就继续沿用下来了。
flyqie
327 天前
不要咬文嚼字。。

这翻译没啥问题,别忘了还有鲁棒性这种从字面上完全看不懂的翻译。。
james122333
327 天前
这两个是不同的 你可以前后端分离 但前端是前端服务端渲染 没人说前端分离后不可以用服务端渲染 只是渲染的东西就不会是数据
james122333
327 天前
数据相关的服务端渲染就会降低 还是有好处
sentinelK
327 天前
“分离”指的是开发分离。
这有特殊的历史背景,既 jsp 、asp 的大量使用。

“渲染”其实指的是排版。既 html 上的内容由服务器端填写,并不依赖客户端的 js 脚本逻辑填充。这里面也有个历史原因。“渲染”这个词在 vue 、react 时代,被培训班大量滥用导致混淆。培训班把填充 html 普遍叫成“渲染”

所以综上所述,名词的定义,一定是随着时间逐渐腐败、泛化的。区别就是你接受与不接受。
zhanying
327 天前
随机存储器:¯\_(ツ)_/¯
adoal
327 天前
这也怪培训班?还特么的从 vue 、react 时代?

英语原文里早在不知多少年前就用 render 表示根据 HTML 模板和实际数据来生成最终页面的过程了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/945682

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX