NextJS,_app,SSG,getInitialProps和getStaticProps以及我应该如何坚持使用DRY?

时间:2020-10-12 15:57:57

标签: next.js dry getstaticprops ssg

我知道该主题不是新话题,我发现(并阅读了)一些讨论。我找不到的是仍然存在的问题的答案。

其他人如何解决_app.js中无法使用getStaticProps的问题?我无法使用 getInitialProps ,因为我想使用 SSG 。即使使用getInitialProps,有没有一种强制SSG的方法?还是我真的必须从每页的Headless CMS中获取所有数据?例如,由于我要构建页眉(包括导航)和页脚。目前,我看到的唯一选择是重复很多代码。

任何暗示都非常感谢,并感谢您阅读!

1 个答案:

答案 0 :(得分:2)

Next.js 建议使用 getStaticPropsgetServerSideProps 而不是 getInitialProps 以获得 Next.js 的最佳性能。

<块引用>

如果您使用 Next.js 9.3 或更新版本,我们建议您使用 getStaticProps 或 getServerSideProps 而不是 getInitialProps

Next.js 推荐这样做的原因是 getInitialProps 禁用了 Automatic Static Optimization 并使用了 Server-side Rendering

在 _app.js 中使用 getInitialProps 将禁用应用程序中所有页面的自动静态优化。此外,它会强制您在每次请求时生成所有页面,因为它们使用服务器端呈现,这将导致错误的 Time to First Byte (TTFB)

我在 Github 上制作了一个带有现场演示和代码示例的 cheat sheet about Next.js page rendering,以帮助快速了解它的工作原理。这将帮助您根据您的用例选择正确的 Next.js 页面渲染策略。