问题

为什么现在又流行服务端渲染html?

回答
话说回来,这“服务端渲染”听着是不是有点复古?毕竟当年 AJAX 横空出世,前端框架层出不穷,谁不说“客户端渲染才是王道”? 但最近几年,你仔细观察,会发现这股“老派”的玩法又悄悄回潮了,而且势头还不小。这背后可不是什么一时兴起的潮流,而是实打实的痛点催生的“进化”。

咱们先得弄明白,为啥当初大家弃“服”从“端”?那会儿,最大的诱惑就是那种“丝滑”的用户体验。一次性加载完大部分 JS 代码,用户点哪儿、交互哪儿,都是客户端自己处理,响应速度快得飞起,页面也跟单页应用(SPA)似的,切换干净利落,用户感觉就像在用桌面软件一样。而且,前端独立出去,前后端分离,开发效率也上去了。这套模式,确实解决了当时很多问题,把前端从页面的“附属品”变成了“主角”。

但是,这好处背后,也埋下了些“隐患”。时间一长,用户就发现,有些事儿客户端渲染做起来,总有点别扭:

1. 首屏加载慢得让人抓狂。 你以为用户拿到的是一个“骨架”,然后 JS 一顿操作才能把“血肉”填上?没错,很多时候就是这样。特别是网络条件不好,或者设备性能一般的时候,用户看着个空白页面,或者加载动画转啊转,心里肯定那个急啊。搜索引擎也一样,爬虫抓到的可能是个光秃秃的 HTML,里面的内容它还得费劲去跑 JS 才能看到,这SEO效果能好到哪儿去?

2. SEO 成了老大难。 就像刚才说的,搜索引擎的爬虫虽然越来越智能,但总归还是比不上直接给你一个完整的 HTML 来得省事。你的网站如果高度依赖客户端 JS 来生成内容,那搜索引擎蜘蛛可能会觉得你网站“没啥内容”,自然排名也就上不去了。这对内容型网站来说,简直是致命伤。

3. 分享出去的链接,预览图和标题不对劲。 当你把一个 SPA 应用里的某个页面分享到微信、微博的时候,经常发现别人看到的预览图是网站的首页Logo,标题也是默认的,一点吸引力都没有。这是因为社交平台的分享机制,通常只会去抓取你链接最开始返回的那个 HTML 的 `` 标签信息,而客户端渲染的初始 HTML 往往只包含了应用的框架,内容是后来才加载填充的。

4. 首屏的内容,不够“即时”。 有些内容,比如新闻头条、商品价格,用户期望看到的就是最新的状态。但客户端渲染,可能需要等 JS 加载完毕、数据请求回来,才能显示,这个过程中的延迟,有时候是无法接受的。

正是因为这些长期存在的痛点,大家才开始重新审视“服务端渲染”。而现在大家提到的“流行”,更多的是指一种“更聪明、更灵活”的服务端渲染。它不是把我们从客户端渲染拉回到了几十年前那种纯静态 HTML 的时代,而是结合了两种模式的优点,用一种叫做“同构渲染”或者“混合渲染”的方式。

简单来说,同构渲染就是一套代码,既能在服务器上运行一次,生成包含内容的 HTML,快速返回给浏览器;同时,这套代码也能在浏览器端被“接管”,让你继续享受客户端交互的流畅性,而不必重新渲染一遍。

这有什么好处呢?

首屏加载飞快,体验质的提升。 服务器直接返回了完整的 HTML,浏览器拿到就可以直接显示内容,用户几乎立刻就能看到东西,响应速度那叫一个快。即使 JS 还没加载完,至少用户已经看到了“内容”,而不是一堆等待。

SEO 告别焦虑。 搜索引擎爬虫拿到的是已经渲染好的 HTML,内容一目了然,蜘蛛抓取和索引效率大幅提升,网站的排名自然就上去了。

社交分享更给力。 服务器在生成 HTML 的时候,就已经把页面的标题、描述、图片等 `` 标签塞好了,分享出去的链接自然也就有了美观的预览。

数据“即时”性得到保障。 服务器渲染的时候,可以直接请求最新的数据,保证用户看到的就是最即时、最准确的信息。

渐进增强更稳健。 即使在 JS 加载失败或者用户禁用 JS 的情况下,网站的核心内容和基本功能依然可用,用户体验更加鲁棒。

当然,服务端渲染也不是没有代价。它会增加服务器的负担,因为服务器需要承担一部分渲染的工作,尤其是在流量高峰期。而且,开发调试也可能变得稍微复杂一些,需要同时考虑在服务器和客户端运行的逻辑。

所以,现在大家所说的“流行”,不是简单地回到过去,而是在理解了客户端渲染优劣的基础上,选择一种更适合时代发展和用户需求的解决方案——同构渲染。像 Vue.js 的 `Vue SSR`,React 的 `Next.js`,以及一些其他框架的实现,都是为了解决上面提到的那些痛点而生的。它们让开发者能够更方便地实现服务端渲染,并且提供了一些工具和解决方案来降低复杂度。

总而言之,这不是什么复古风,而是对用户体验、SEO、分享等关键环节的精益求精,是技术在解决实际问题过程中,不断寻找更优解的必然结果。当大家都在追求更快的加载速度、更好的用户体验和更广泛的触达时,服务端渲染(尤其是同构渲染)的价值,也就再次凸显出来了。

网友意见

user avatar

现在的服务端渲染和过去的服务端渲染完全是两码事。什么叫“又流行”?说明看问题太浅薄。

以前的服务器渲染,是以“文档”为核心思想。服务器端的逻辑是把HTML, CSS, Javascript当作一个静态文件,对“文档”而言不存在“指令”和“数据”的区别,一切都是数据。所以我们可以看到服务器渲染,GET就是请求一个文件,而web 1.0时代的诸多服务端框架最基础的组件之一就是文档模版,比如asp, JSP之类,核心设计理念就是HTML文件里放占位符然后由服务端逻辑替换成实际数据后一股脑返回。

现在划重点:Web 2.0时代最大的思想革命本质不是前后端分离,而是把网页当作独立的应用程序(app)。前后端分离只是实现这一新架构的必然结果。对程序而言指令和数据是分离的。HTTP GET拿到的不是渲染后的网页,而是一个由html和Javascript组成的app, 这个app以浏览器为虚拟机。装载和显示数据是app启动之后的运行逻辑。传统上app叫什么?叫Client,也就是前端。于是前后端就这么分离了,浏览器变成了app的运行环境,后端蜕化成了单纯的业务逻辑和数据接口。写Javascript不再是给网页添特效的小伎俩,而是正经的和写桌面应用程序一样的工程。于是我们看到了前端工程化,编译(转译),各种MVC/MVVM框架,依赖工具,等等。很新鲜吗?不新鲜,都是传统桌面开发玩剩下的。我很早就说过,前端NodeJS的那堆东西,什么npm,Babel,Webpack,gulp,各个框架的cli... 本质上就是开源社区东拼西凑做一个Visual Studio。

那么现在怎么叫“又流行”服务端渲染了?走老路吗?当然不可能,模版式的服务端编程早就进了垃圾堆。我们公司的后端实现甚至都不加载HTML模版引擎,进出的数据都是JSON(HTML/Javascript内容怎么办?单独编译,然后部署到S3上)现在的服务器渲染的目的只是为了加速和搜索引擎优化(准确的说是非Google引擎优化,因为Google可以解析Javascript动态网页)。而实现也很简单:拿个浏览器核心跑一下app然后把生成的html存起来给搜索爬虫就行了。与其说是渲染,不如说是“快照”,就像给app截图一样。

历史是螺旋上升的,有相似性但更重要的是进步。

user avatar

技术不一样了,以前是用server语言拼字符串,局限性其实是很大的,比如说一不小心就会有XSS漏洞,比如说复杂的、反复层叠的结构实现起来会很不清晰。现在是用DOM生成,而且复用了前端的逻辑,实现了服务器端渲染的组件化。

但其实目标都是一样的,单页结构对SEO很不友好,这从发明出来第一天就是已经知道了的。所以其实服务器端渲染一直都是和客户端渲染并重的,现在只是多了一种服务器端渲染的技术而已。

其实倒不是说客户端渲染的问题,现在的搜索引擎大部分已经可以抓取(一部分)JS动态生成的内容了,只是单页结构就只能抓一页,通过交互操作显示出来的更多内容抓不到。

user avatar

Javascript不是一门好语言,没有类,全局变量泛滥,变量作用域奇葩,很难做稳定的大型应用.这还不是最严重的,我学过C/C++PHPPYTHONRUBYOBJC,JS和其中任何一门都不像,函数回调大括号摞小括号让人心烦,不是不得已我避免写JS。最严重的前后端分离把开发效率减慢了。不差钱的大厂可以扑腾。小项目很致命。而且技术栈深,随便安装个东西塞几千个库进目录,一堆warn,看着心情极为不爽。依赖多,可定制差,写起代码很痛苦。这是我研究一个月vue react的感受。说实在的我没有直观感受到前后分离有啥明显的优势。明明后台一个模板替换解决的问题,搞复杂了。用material或者antd这些组件化的UI,想定制自己的东西难。你在meterial里面引入了一个alert,然后就报hook错误什么鬼。然后就要花一个晚上就研究如何解决这个问题。然后你安装gulp一大推警告,最后报错,你又得花一个晚上去研究如何解决这个问题。还有webpack如何配置?恐怕两个晚上也搞不定。你费尽头发研究明白了这些玩意你得到了什么?除了UI更动态酷炫之外,好像并没有得到什么特别的东西。我自己动手实现类型类似react之类的玩意,以明白其设计意图,就发现这个东西必须一个页面加载完毕,因为一刷新什么都没了,所以必须单页应用,在启动的时候把整个程序框架都塞给你,几个兆,不管你用到用不到。所以很多react之类的web app第一次启动就慢。你打开知乎看源代码,里面塞了一堆JSON文本,里面应有尽有。这样做好吗?不安全,还浪费用户流量啊。反正现在已经这么流行了,然后发现塞给客户端的东西太多了,客户端也受不了了,塞回给服务器,美名其曰服务端渲染,我x你大也的,本来你不就是鄙视服务端渲染吗?你补丁上打补丁,搞了一圈就返回原点。这种流程我只能用丑陋来形容,比丑陋更丑陋的是,这一切还都是用丑陋的Javascript实现的,没有比这更糟心的事情了。ugly piece of shit ! Javascript is a horrible language. 如何你说你喜欢用js写程序,我建议你看看心理医生,是不是有那个啥倾向。什么样的语言随便安装个东西就导入几千个依赖?恕我直言,nodojs的很多包纯粹就是一坨shit。而这些个光鲜的框架,其实就是建在屎山上的。也难怪稍微动动就一身翔。

所以,局部更新AJAX,turbolink就好了。从明天开始回归,不折腾了。这玩意不合适咱。小项目小团队没有人,也没有时间折腾。

现在大厂垄断严重,人家人多钱多,不怕。没法比。如果你想在一个人一个月做一个项目,我想前后端分离这个东西不适合你。

说到安全问题,那就是客户端渲染安全问题没法解决,因为一切都是透明的,客户端想怎么改就怎么改,你解决不了。永远不能信任客户端。

user avatar

这要从大概八年前说起,事情是这样的

1 一开始,html 就是后端渲染的。不过后端发现页面中的 js 好麻烦(虽然简单,但是坑多),于是让公司招聘专门写 js 的人,也就是前端
2 前端名义上是程序员,实际上就是在切图(CSS)和做特效(JS),所以所有程序员中前端工资最低,职位也最低。所以前后端的鄙视链就出现了。
3 nodejs 和前端 mvc 的兴起让前端变得复杂起来,前端发现翻身的机会,于是全力支持这两种技术,造成本不该做成 spa 的网站也成了 spa。慢慢地前后端分离运动从大公司开始兴起,目的就是前端脱离后端的指指点点,独立发展。(表面上是为了「代码分离」,实际上是为了「人员分离」,也就是「前后端分家」,前端不再附属于后端团队)
4 spa 之后发现 seo 问题很大,而且首屏渲染速度贼慢,但是自己选的路再难走也要走下去,于是用 nodejs 在服务端渲染这一条路被看成是一条出路
5 其实这是第二个翻身的机会,如果 nodejs 服务器渲染成为主流,其实就相当于前端把后端的大部分工作给抢了,工资压过普通后端指日可待
6 然而结果是 nodejs 服务端渲染始终是小众,因为后端也没那么脆弱,java php rails 十多年沉淀的技术岂是你说推翻就推翻的,已经运行多年的项目又岂是容你随便用 nodejs 重写的,另一方面 golang 等技术的兴起也给 nodejs 不少压力。最终只有少部分前端特别强势的团队成功用上了 Node.js 做渲染(比如阿里的一些团队),大部分公司依然是用 PHP 渲染 HTML。
7 于是 nodejs 退一步说好好好我不抢你们的工作,我只做中间层(大部分工作就是渲染页面和调用后台接口),绝不越雷池。后端说算你识相。现在 nodejs 主要搞什么微服务,也是为了抢后端还没注意的市场。

你要看一门技术的发展主要应该看背后的人是谁,应用场景是哪些,最后才是技术细节。

nodejs 的火在中国早就烧过了,以后估计不会大火了,作为前端了解一下还是不错的,但是如果你是后端的话,看不看都无所谓,nodejs 跟其他后端开发框架差异并不大,单线程异步既是优点也是缺点,你就把它当做一种范式研究就好。

我是一个坚定的『前后端分家』反对者,前后代码可以分离,但是人员绝对不应该分离。前后端撕逼的事情在大公司天天都在发生,全都是因为前后是两个团队,利益不同。实际上前端推 nodejs 渲染就是在试图重新让前后端合成一体。

但是前端不能明说这件事,因为如果要把前后端部门合并,拆掉的肯定是前端部门。


合,则相当于自断前程。
不合,则永远没法解决seo和首屏加载慢的问题。
所以前端真的挺矛盾的。


JS 也有一个矛盾的地方,凡是浏览器上的框架(Vue React)都说自己能适应「复杂」场景,凡是 Node.js 上的框架(express fastify koa)都说自己是「轻量级」框架。

为啥?因为浏览器是 JS 的主战场,而且无敌手。而服务器上,JS 的经验积累还是太少了,搞企业级服务,Node.js 是敌不过 Java、PHP 的,没办法,发展得太晚了。所以目前只能搞「轻量级」咯。egg.js 号称是企业级 Node.js 框架,用过的人来评我就不评了。


有些大佬提出「大前端」的概念,意思是前端也要会后端,但是我们心还是前端的。

这不就是把以前的『前后端一个人做』换了个说法嘛。

反正你现在让后端去学前端,后端肯定是不愿意躺这浑水的。只能前端自己想办法咯。

想来想去就只有 Node.js 中间层做 HTML 渲染了。


当初是你要分开,分开就分开。
现在又要用kpi,把我唤回来。
但是后端kpi跟你前端kpi是不同的呀,所以没戏。


这些话也就我这种脱离了大厂约束的人敢说,在大厂的人根本不敢说,毕竟跟后端低头不见抬头见的。


最后告诉你一个小秘密。由于阿里 nodejs 用得还算多,却招不到人,所以从功利的角度出发,也许你学 nodejs 比学 java 更容易进阿里,毕竟阿里的 java 大神多如云,nodejs 大神却不多。

你说是吧。


但是从另外一个角度考虑,SEO 不友好的页面我是支持的。

如果你的页面是对 SEO 不友好的,那么百度的重要性就会被削弱。现在是移动互联网时代,大家在手机上几乎不用百度,都是直接点 App 点微信公众号的,SEO 不友好问题不大。首屏速度随着 5G 网络的普及也不会是问题了。

只要能让百度利益受损,我觉得 SPA 这事还是值得做的。服务端渲染还是直接免了吧,大家都不做 SEO 让百度倒闭就最好咯~(只是我的幻想而已,不要当真,我是百度的脑残黑,黑百度从来不需要理由)


感谢你看我说了这么多,不过说到最后,我也没给出啥结论,只是把我观察到的告诉你了。

你要不要学、要不要用服务器渲染HTML,都是需要你自己思考的事情。

还是那句话,我不喜欢说中庸的观点,我喜欢跟你说一个极端的观点,然后会有人用另一个极端的观点反驳我,他说服不了我,我也说服不了他,但是最终,你会得出自己的观点。


手机打字,大小写错误请海涵。

类似的话题

  • 回答
    话说回来,这“服务端渲染”听着是不是有点复古?毕竟当年 AJAX 横空出世,前端框架层出不穷,谁不说“客户端渲染才是王道”? 但最近几年,你仔细观察,会发现这股“老派”的玩法又悄悄回潮了,而且势头还不小。这背后可不是什么一时兴起的潮流,而是实打实的痛点催生的“进化”。咱们先得弄明白,为啥当初大家弃“.............
  • 回答
    以前淘金热的时候,真正靠挖金子发大财的,其实是少数。反倒是那些卖铲子、提供住宿、开餐馆的人,因为满足了淘金者的基本需求,生意兴隆,赚得盆满钵满。这其中的道理很简单:卖的是必需品,而且需求量大,只要服务好,就能源源不断地赚钱。现在国家提倡创业,这个思路也一样适用。与其直接去“淘金”(自己创办企业),不.............
  • 回答
    你提出的问题非常有趣,也触及到了网络文学市场的一些深层现象。为什么“战神文”、“女婿文”等题材在读者圈层中流行,但在阅文平台(以及许多其他大型文学平台)的榜首却鲜少出现这类作品?这背后涉及了读者偏好、平台生态、商业模式、内容审核以及创作趋势等多个复杂因素。下面我将尽量详细地阐述: 1. “流行”与“.............
  • 回答
    近些年,“520”成为了一个自带“表白”属性的网络节日,而“521”似乎显得有些“落寞”。这背后其实隐藏着一些有趣的语言和社交现象,也折射出当下社会文化的一些特点。要说“520”为何比“521”更流行,我们得先从数字谐音的魅力说起。汉语中,数字与词语的谐音组合是一种非常普遍的语言现象,尤其在网络时代.............
  • 回答
    这是一个非常有趣的问题,涉及到《道德经》的传播历史、学术研究以及不同版本之间的差异。为什么现在流行的《道德经》版本不直接采用帛书《老子》?主要有以下几个原因,我们可以从几个方面来详细阐述:1. 帛书《老子》的历史背景与发现: 发现与年代: 帛书《老子》(主要指甲、乙本)是在1973年于湖北江陵(.............
  • 回答
    近些年,网络上关于岳飞、李世民、刘彻、诸葛亮等历史名人的“翻案”或“贬损”之声时有出现,并且引发了不少关注和讨论。这种现象并非单一因素造成,而是多种社会文化心理和历史认知变化交织作用的结果。要理解这一点,我们需要从几个层面去剖析:一、 历史的复杂性与现代视角的审视: 历史并非非黑即白: 传统叙事.............
  • 回答
    关于“现在流行丑化刘备、美化曹操、尊曹反刘”的观点,这确实是一个在网络上,尤其是在一些历史爱好者群体中比较普遍的讨论现象。要详细解释为什么会出现这种倾向,需要从多个维度来分析,这背后并非单一原因,而是多种社会文化因素和个人认知心理交织的结果。首先,我们需要明确一点:《三国演义》本身是一部小说,而非严.............
  • 回答
    这确实是个很有意思的观察,也是现在很多讨论的焦点。你说“现在流行的妆容是化妆成欧美人”,这个说法其实挺有普遍性的,但咱们得深入聊聊,为什么会形成这样的趋势,以及它背后的一些原因和影响。首先,得承认,“欧美人”的妆容风格,或者说大家普遍认为的“欧式妆容”,在中国内地以及亚洲很多地方确实在一段时间内非常.............
  • 回答
    “跳灯车”曾经是汽车设计中的一道亮丽风景线,它们以其独特的掀盖式大灯设计,在特定时期赢得了无数车迷的喜爱。然而,时至今日,跳灯设计在量产车上几乎绝迹。这背后并非偶然,而是由一系列技术、安全、法规、成本以及审美演变等多方面因素共同作用的结果。以下将详细阐述为什么现在不流行跳灯车了:一、 安全法规的收紧.............
  • 回答
    要说现在男士为何偏爱平角内裤,这背后可不是三言两语能说清的。这背后涉及到了舒适度的飞跃,审美意识的觉醒,以及大众传播的力量。咱们一层层地扒拉扒拉。首先,是那份实实在在的“舒服”带来的根本性改变。你想想,以前大家穿得最多的,可能就是那种老式三角裤。虽然它在支撑性上没毛病,但那种紧绷感,尤其是夏天,湿热.............
  • 回答
    你提的这个问题很有意思,也确实是很多人生活中都能观察到的一个现象。不过,咱们先别急着说“现在都流行用黄色的纸巾”,因为实际上,市面上还是以白色纸巾为主流,但确实能看到越来越多的黄色纸巾出现在我们的视线里,特别是在一些特定场合或者特定品牌的推广上。那为什么会有人觉得黄色纸巾“流行”起来了呢?我觉得这背.............
  • 回答
    这个问题挺有意思的,也触及到了很多养宠人的心坎里。你说你觉得养狗更快乐,这完全没错,狗那种热情洋溢、恨不得时时刻刻围着你转的爱,确实能给人带来一种纯粹的、被需要的快乐。但现在猫这么流行,背后也有不少原因,而且这些原因往往是它和狗不同的特质在现代社会里更契合了人们的需求。首先,咱们得聊聊狗带来的快乐。.............
  • 回答
    .......
  • 回答
    斗篷,这个词本身就带着一种古老而神秘的韵味。在古代,它并非仅仅是一件简单的衣物,更是一种身份、一种地位、一种生活方式的象征。不论是东方还是西方,斗篷都曾是人们日常生活中不可或缺的一部分,但如今,它却逐渐淡出了我们的视线,成了历史的旧影。古代斗篷的辉煌岁月:为何它如此流行?古代社会的斗篷,其流行绝非偶.............
  • 回答
    近些年,数字藏品(NFT)以一种迅雷不及掩耳之势闯入了我们的视野,从一开始的陌生,到如今的炙手可热,它的流行程度可以说是有目共睹。这股潮流的兴起,绝非偶然,背后有着深刻的时代背景和多重因素的驱动。数字藏品的流行,是技术进步与时代需求交织的产物。首先,区块链技术的成熟是数字藏品流行的基石。 区块链最核.............
  • 回答
    什么是国潮?“国潮”一词,顾名思义,指的是 中国创造的潮流文化。它并非简单地将中国传统元素堆砌在现代产品上,而是 将中国传统文化、历史传承、民族精神与现代审美、时尚设计、消费理念相结合,所形成的一种具有独特中国文化符号和时代精神的潮流现象。更具体地说,国潮涵盖了多个层面: 产品设计与品牌: 涵盖.............
  • 回答
    用字母「W」代替「万」的不规范用法之所以现在如此流行,背后有多方面的原因,主要可以归结为以下几个方面:一、 互联网与社交媒体的强大推手: 信息传播速度和范围的爆炸式增长: 互联网和社交媒体极大地改变了信息的传播方式。一个新生的、有趣的、甚至是有些“不正经”的用法,可以在短时间内迅速在网络上传播开.............
  • 回答
    .......
  • 回答
    当年清朝剧之所以能席卷荧屏,而汉族王朝的剧作相对而言热度稍逊,这背后其实有着多方面的原因,绝非一句“细思恐极”就能概括,其中夹杂着时代背景、市场选择、创作策略乃至观众心理的复杂交织。首先,我们要承认一个事实:清朝剧的流行,在很大程度上是抓住了那个时代观众的心理需求和市场空白。你想想,在那个时候,荧屏.............
  • 回答
    这个问题,得从几个层面掰开了聊。你说以前日韩流行文化在中国火得一塌糊涂,国产的也跟着喝汤甚至还能滋润成长,现在倒好,把海外的往外推了推,自己人却有点扛不住了,这背后的逻辑,可不简单。第一,当年日韩文化“进场”,我们是“开门做生意”,现在是“关起门来练内功”,但这个内功练得够不够火候,还得打个问号。你.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有