如果没有阻塞数据要求,则Next.js会自动确定页面为静态页面(可以预呈现)。此确定是通过在页面中缺少getServerSideProps
和来getInitialProps
进行的。
此功能允许Next.js发出包含服务器渲染页面和静态生成页面的混合应用程序。
静态生成的页面仍然是反应性的:Next.js会充实您的应用程序客户端,使其具有完全的交互性。
此功能的主要优点之一是优化的页面不需要服务器端计算,并且可以从多个CDN位置立即流式传输到最终用户。结果是为您的用户带来超快的加载体验。
这个怎么运作
如果页面中存在getServerSideProps
或getInitialProps
,则Next.js将切换以按请求按请求渲染页面(即服务器端渲染)。
如果不是上述情况,则Next.js会通过将页面预呈现为静态HTML来自动自动优化页面。
在预渲染期间,路由器的query
对象将为空,因为query
在此阶段我们没有信息要提供。水化后,Next.js将触发对您的应用程序的更新,以在query
对象中提供路由参数。
注意:添加动态路由到正在使用的页面的参数
getStaticProps
将始终在query
对象内部可用。
next build
将发出.html
用于静态优化页面的文件。例如,页面的结果pages/about.js
将是:
.next/server/pages/about.html
如果添加getServerSideProps
到页面,它将是JavaScript,如下所示:
.next/server/pages/about.js
注意事项
- 如果您有一个自定义
App
,getInitialProps
则将在没有“静态生成”的页面中关闭此优化。 - 如果您有一个自定义
Document
,请getInitialProps
确保ctx.req
在假定页面是在服务器端呈现之前检查是否已定义。ctx.req
将undefined
用于预渲染的页面。
作者:terry,如若转载,请注明出处:https://www.web176.com/nextjs/2442.html