在 Next.js 中,为啥要静态渲染? _document.js 包括 getInitialProps

Posted

技术标签:

【中文标题】在 Next.js 中,为啥要静态渲染? _document.js 包括 getInitialProps【英文标题】:In Next.js, Why static render? _document.js includes getInitialProps在 Next.js 中,为什么要静态渲染? _document.js 包括 getInitialProps 【发布时间】:2021-01-21 10:18:46 【问题描述】:

我对 Next.js 中的 _document.js 文件感到非常困惑,想知道为什么它似乎违反了 Next.js 中“getInitialProps 将禁用自动静态优化”的规则。

显然,它不像您在运行生产构建时所看到的那样。结果输出声称页面将被静态优化。由于任何页面都通过 _document.js 运行,因此它们都不应该能够进行静态优化。

import Document,  html, Head, Main, NextScript  from "next/document";

class MyDocument extends Document 
  static async getInitialProps(ctx) 
  const initialProps = await Document.getInitialProps(ctx);
  return  ...initialProps ;
   

   render() 

【问题讨论】:

【参考方案1】:

getInitialProps 如果您进行异步调用以获取数据,将禁用自动静态优化。在上面的例子中,它不会阻止创建静态页面。

【讨论】:

以上是关于在 Next.js 中,为啥要静态渲染? _document.js 包括 getInitialProps的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 静态数据生成以及服务端渲染的方式

了解与学习 Next.js

了解与学习 Next.js

如何将 favicon 添加到 Next.js 静态站点?

为啥 Django CMS doc'n example Hello Plugin 在渲染时向 hello 模型类添加 <projectname_> 前缀导致错误?

next.js的框架