vue.js - 使用SSR时如何防止Nuxt水化?

标签 vue.js nuxt.js server-side-rendering

我们正在使用这种方法来呈现内容:

<div id="full-article" v-html="content"></div>
this.content = api.response.data

在这种方法中,“内容”是从 API 中检索的,但是因为我们还使用了服务器端渲染 (SSR),所以最终的 HTML 变成了这样:

<div id="full-article">$real_html_content</div>
this.content = $real_html_content

这种方法意味着内容会重复,一次作为呈现的 HTML,一次作为 javascript 变量。但在这种情况下,我们没有使用 javascript 内容变量。它仍然包含在最终 HTML 页面中的事实意味着页面大小是所需大小的两倍。我们怎样才能防止这种情况发生?是否有某种方法可以隐藏/删除已由 SSR 呈现的 javascript 内容?

或者,也许以不同的方式处理这些内容会更好,也许在稍后阶段插入它而不涉及 Nuxt 或 SSR?

最佳答案

这就是您要查找的内容:https://github.com/maoberlehner/vue-lazy-hydration
创建者 Markus Oberlehner谁在寻求避免将大量 JS 运送到前端,尤其是在不需要时。

您确实有多种选择,但这就是它的使用方式

<lazy-hydrate never>
  <article-content :content="article.content"/>
</lazy-hydrate>

在这种情况下,水合作用(将 JS 注入(inject)静态内容)永远不会发生。还有其他有趣的选项也可以使用!

请记住,这更像是一个概念验证,因此 Markus 仍将其视为 beta-ish 的原因。这个项目可能会在某个时候死掉,因为 Vue3/Nuxt3 将能够以官方方式做到这一点。

尽管如此,即使我还没有尝试过,您现在就可以完全使用它并享受 JS-light 体验,它应该可以工作!

关于vue.js - 使用SSR时如何防止Nuxt水化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67733275/

相关文章:

javascript - 无法使用 Pinia Store 从状态检索数据

javascript - 在每个轮盘事件上更改页面

laravel - 使用 VueJS、axios 和 Laravel 上传文件

angularjs - 因为我现在正在使用 Laravel,所以我应该学习 Vuejs/Angular/React 吗?

javascript - 为什么 react 服务器端渲染剥离事件处理程序?

javascript - NuxtJS页面标题不变

nuxt.js - Nuxt js - 未定义窗口或文档

vue.js - 在 nuxt.js 中添加 cdn 样式表和 javascript

cookies - NextJS 与 next-auth ,设置从 node.js 收到的 cookie

reactjs - React服务端渲染中如何基于动态路由路径获取数据