【发布时间】:2021-10-01 19:40:09
【问题描述】:
在渲染路由时在服务器端调用fetch,在导航时在客户端调用。
我了解 Nuxt.js 支持通用应用程序的概念,但为什么有人需要在服务器和客户端都执行 fetch 挂钩块?对我来说听起来很多余。
【问题讨论】:
标签: nuxt.js
在渲染路由时在服务器端调用fetch,在导航时在客户端调用。
我了解 Nuxt.js 支持通用应用程序的概念,但为什么有人需要在服务器和客户端都执行 fetch 挂钩块?对我来说听起来很多余。
【问题讨论】:
标签: nuxt.js
这主要用于同构(又名通用)应用程序方面。因此,如果您有 ssr: true,这将通过提前生成内容来帮助您提高性能和 SEO,因此也在服务器上。
这是在双方都完成的,因为您需要在服务器和客户端上拥有相同的内容,否则会出现 DOM 不匹配并且水合将失败(意味着巨大的性能损失!)。
而target: static + ssr: true 是一个常见的组合,尤其是在 Vercel/Netlify 上托管时,因为它将提供性能、SEO 以及 SPA 的所有好处。
如果您仅将 Nuxt 应用程序用作 SPA (ssr: false),则其好处会不那么令人印象深刻,但人们通常会选择 Nuxt 是因为它的 SSR/SSG 方面。
但是,当您的整个 SPA 都在做这件事时,您会一直在等待您的应用程序……您可以告别 SEO。
如果您不喜欢它,您可以随时将fetchOnServer 设置为每个组件或nuxt.config.js 中的false。
https://nuxtjs.org/docs/2.x/components-glossary/pages-fetch#options
最后,当它说这将在服务器和客户端上生成时,我们确实需要了解服务器正在进行调用:
target: server,一旦JS被发送到浏览器,SPA将处理客户端的后续调用这并不是一种巨大的浪费,而且服务器总是在每个客户端导航(MPA 方法)上为您进行调用。
作为旁注(使用asyncData),当从 API 生成一些页面时,您可以使用已经计算的服务器负载,而不必再次在客户端上获取它。对于博客等一些纯静态内容很有用!
https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-generate#speeding-up-dynamic-route-generation-with-payload
【讨论】: