如何在 NextJs 中从 dom 中删除 __NEXT_DATA__?

How to remove __NEXT_DATA__ from dom in NextJs?

因为 NEXT_DATA 元素 dom 大小变得非常大并且影响了性能。谁能帮我从 dom 中删除 NEXT_DATA? 我在下一个 Js 中使用带有动态路由的完整服务器端渲染。

TLDR: 如果你愿意(/可以)删除 __NEXT_DATA__ 脚本标签,React 将无法 hydrate。您要么硬编码页面中的数据,要么尝试减少从 getServerSideProps.

返回的 pageProps 负载

我最近也遇到了这个问题,我问自己,为什么 内容需要包含 在 HTML 2次.

  1. 作为内容本身 - 当您的 NextJS 呈现适当的 HTML 并将其发送给客户端时
  2. As JSON in <script> tag - 这是因为客户端需要rehydration

“解决方案”

  • 仅从数据获取方法返回必要的数据 - 我可以推荐阅读这篇文章 Reducing HTML payload with NextJS,他们在其中讨论格式化/加重必要的数据并只返回需要的字段。
  • 不使用数据获取方法和硬编码静态内容 - 使用静态数据获取背后的想法,如果不使用revalidate 选项,是内容不应该改变(也许永远)。所以在那种情况下,为什么我们不能在页面本身中对数据进行硬编码。虽然这样做的缺点当然是,必须手动将其全部写出来/将所需内容下载到某个 JSON / 对象,然后像这样在页面中使用它。

阅读

  1. 这是您可能感兴趣的github link with related discussion in next
  2. Blog post about reducing the size of __NEXT_DATA__ - by Liran Cohen.