本篇文章主要是简单认识一下这些专业词汇的意思。 没有复杂的源码分析之类的~ 【科普向】
client-side render
客户端渲染
js bundle
js
js
文件,渲染对应的dom
树TIP
可以发现CSR
的 html 内容是在客户端执行完成的
js
然后在执行js
,才可以渲染出来想要的页面,所以对于首屏渲染不友好。
因此就出现了SSR
方案server-side render
服务端渲染
html
页面html
页面并且展示,这时页面已经可见,但是还不能交互,所以要下载html
页面对应的js
文件js
文件,进行注水(hydrate
)(会不会让页面重新渲染?)TIP
可见服务端渲染html
是在服务端就完成的
ssr
在第二步时就可以看到页面了,对于首屏渲染非常友好,只是此时的页面还不能进行交互(dom
点击),需要进行hydtate
之后才可以进行交互所以接下来我们看一下hydrate
是干什么的。
从上面我们可以知道,在ssr
中浏览器会首先将html
页面展示出来,但是此时的页面是无法交互的(即没有绑定附加的点击等事件)。
所以我们后续需要将一些可交互的事件注入到页面元素中去,这个过程就是hydrate
。
这个过程很像是给一个干瘪的元素注入生机,让他变得更加生动。
首先我们可以看到上图中绿色的部分其实就是页面中可以交互的部分,上图就是一个完整可交互的web
页面。
但是我们在csr
中,因为客户端需要加载并执行js
,所以一开始页面是下面这样的(空白页)
而在ssr
中,因为请求回来的就是一个干瘪的html
页面,是可以直接展示的,像下图那样
此时的页面是只可以看,不可以动的(即没有哪家附加的绑定事件)
而hydrate
就是将这个干瘪的html
注水变成可交互的
● https://blog.saeloun.com/2021/12/16/hydration.html ● https://zhuanlan.zhihu.com/p/323174003 ● http://www.ayqy.net/blog/react-ssr-under-the-hood/#articleHeader9