Skip to content

下面用做蛋糕的例子来解释 Nuxt 的服务端渲染和水合概念:

服务器端渲染阶段(制作完整可食用的蛋糕胚)

想象服务器就像一个专业的蛋糕厨房。当你在浏览器中请求一个 Nuxt 应用的页面时,服务器上的 Nuxt 就开始工作啦。它运行 JavaScript(基于 Vue.js)代码,这就好比在厨房中按照精确的配方制作一个蛋糕。经过一系列精心操作,厨房做出了一个完整的蛋糕胚,上面有漂亮的奶油装饰(完全渲染的 HTML 页面),这个蛋糕胚已经是一个可以直接吃的完整蛋糕,包含了蛋糕所需的所有基本部分(网页所有的初始内容 )。

如果之前有其他人也订了同样的蛋糕,厨房把这个蛋糕的成品存放在冰箱(缓存)里了,那当你下订单时,厨房就直接从冰箱里取出这个蛋糕给你(从缓存返回完全渲染的 HTML 页面)。相比传统那种只能等现场制作很久才能拿到蛋糕(客户端渲染等待时间长),现在你很快就能拿到这个完整的蛋糕胚。

水合阶段(给蛋糕添加互动机关)

你拿到这个完整的蛋糕(HTML 文档),可以看到和吃到整个蛋糕的样子了。不过目前这个蛋糕还只是“静态”的。现在就到了水合阶段啦,Vue.js 就像蛋糕魔法工匠。这个工匠来到你身边(在客户端浏览器运行),开始对蛋糕做一些神奇的事情。

工匠在蛋糕里安装特殊机关(将事件侦听器绑定到 HTML 元素 ),例如插入一些隐藏的小按钮,当你按下按钮,蛋糕某个部分会弹出可爱的小纸条,上面写着有趣的话;或者安装滑动感应装置,当你在蛋糕表面滑动的时候,奶油图案会变换。 这些操作是通过运行和服务器端制作蛋糕时相同的 JavaScript 代码来实现的(曾经在服务器上运行的相同 JavaScript 代码再次在客户端运行),让原本普通的蛋糕变得生动有趣,能和你互动起来。这个将静态蛋糕变得有交互性的过程就是水合作用。

水合完成后的好处(享受具有互动性的美味蛋糕)

当蛋糕魔法工匠完成所有的机关安装(水合完成)后,这个蛋糕就太棒啦!你不仅一开始就快速拿到了美味可口的蛋糕(快速的页面加载时间),而且现在还可以玩各种有趣的互动机关(享受动态界面和页面转换等好处),让你获得更好的体验。与此同时,有一些特殊的评委(搜索引擎爬虫)要来评估这个蛋糕。因为蛋糕一开始就是完整呈现的(内容已经存在于 HTML 文档中),评委可以很轻松地看到蛋糕的所有细节(进行索引),不用再做额外的等待或者复杂操作就能完成评估。

共 20 个模块,1301 篇 Markdown 文档。