在纯VueJS应用程序中,我们有一个<div id="app"></div>
容器,其中VueJS放置了所有需要渲染的东西。
因此,如果我们在浏览器中打开源代码,我们将看不到任何呈现的内容。
因此,如果我们使用SSR的Nuxt功能,在第一次初始加载时,所有组件都在服务器上呈现,我们看到一些HTML内容。
但是,当我们浏览网站时,当它在“spa模式”下工作时(使用<nuxt-link>
)会发生什么。当我点击链接时,该网站未完全重新加载。我看不到Chrome开发工具中的任何请求,非XHR非其他人。即使我们从后端获得完全呈现的内容,它也会通过javascript插入,就像在<div id="app"></div>"
情况下一样,因为我们不会重新加载页面。
但是我可以在源代码中看到一切都像搜索引擎优化需求一样:导航到其他一些路由后,所有的html都存在于源代码中。但是这是怎么发生的?
该过程称为水合作用。
请注意,在SPA模式下,所有内容都会在客户端上呈现。使用SSR时,第一次渲染发生在服务器上,因此您可以在源代码中看到HTML。
一旦进入客户端,VueJS将“保湿”它的状态,这意味着它将App的状态设置为来自服务器的状态。如果您然后使用<nuxt-link>
它将在SPA模式下导航。另一方面,使用正常的<a>
不会。
这适用于所有用例,因为Google和其他搜索引擎没有启用Javascript,他们只会对您的所有链接发出全新请求,但您的用户会感觉到SPA页面。