SSG(Nuxt.js,盖茨比)在做什么?
What is SSG (Nuxt.js, Gatsby) doing?
我听说 SSG 生成静态站点。
然后我认为 SSG 生成不包含 React 的纯 HTML,但我认为现在可能不是这样。
我认为:
SSG 生成一个普通的 React App 并渲染 HTMLs 用于初始化。
因为它是一个普通的React App,如果我点击一个按钮并触发副作用,就会触发客户端渲染并更新页面。
当触发router路由时,会下载下一页的js文件和build时获取的数据,然后触发客户端渲染。
此处未使用为初始化呈现的下一页HTML。
这是真的吗?
我几周前在 Nuxt 讨论中回答了这个问题:https://github.com/nuxt/nuxt.js/discussions/9493#discussioncomment-948643
假设 SSG 带来了一些东西:
- 搜索引擎优化
- 速度
- 生态
- [可能还有一些其他事情]
有多种实现 SSG 的方法,它们都有自己的 pro/cons 和用例。在大多数情况下,如果您使用 Nuxt.js,您可能会选择 target: static
、ssr: true
路线。
这将:
- 在构建期间生成完全静态的页面,您将能够在 Netlify、Vercel 或类似平台上托管它
- 获取静态文件后,用一些 JS 来润色静态内容
- 之后具有 Vue 行为,作为经典 SPA(因此无需进一步的服务器调用即可管理路由)
此行为称为同构或通用,更多信息请参见链接讨论。
Gatsby 和 Next.js 的工作方式有些相似。有一些细微差别,但在这 3 个 AFAIK 中,一般情况在全球范围内是相同的。
SSG (Static Site Generators) 像 Gatsby 和 Next,什么他们所做的是基于 React 环境代码创建一个输出 HTML。这并不意味着该站点在交互方面是“静态的”。这意味着您请求的页面已经创建,因此您可以避免服务器中的响应和编译时间。
总结一下,给定一个“传统”/“老式”PHP 网站。例如,当您请求主页时,您的请求发送到服务器,服务器将 PHP 转换为 HTML(浏览器可以解析和打印的内容),然后您获得该页面。 Gatsby/Next 中省略了处理时间,因为 HTML 已经创建。
当您在 Gatsby/Next 中构建您的网站时,将从源中检索数据(使用降价、CMS、API、JSON 等中的 GraphQL)并创建输出(这就是为什么有 /public
文件夹生成)。您所有的 JavaScript 和 React 都捆绑到输出 HTML 中,因此您的网站在用户交互方面将是“动态的”,React 是生态系统的一部分,因此您的副作用(由 [=11 触发) =] 挂钩)或您的 rehydration 流程(例如 useState
挂钩)将成为您网站的一部分。
解释为:
当您导航到另一个页面时,您正在请求一个已经构建和生成的页面,这就是速度如此之快的原因。
我听说 SSG 生成静态站点。 然后我认为 SSG 生成不包含 React 的纯 HTML,但我认为现在可能不是这样。
我认为:
SSG 生成一个普通的 React App 并渲染 HTMLs 用于初始化。 因为它是一个普通的React App,如果我点击一个按钮并触发副作用,就会触发客户端渲染并更新页面。
当触发router路由时,会下载下一页的js文件和build时获取的数据,然后触发客户端渲染。 此处未使用为初始化呈现的下一页HTML。
这是真的吗?
我几周前在 Nuxt 讨论中回答了这个问题:https://github.com/nuxt/nuxt.js/discussions/9493#discussioncomment-948643
假设 SSG 带来了一些东西:
- 搜索引擎优化
- 速度
- 生态
- [可能还有一些其他事情]
有多种实现 SSG 的方法,它们都有自己的 pro/cons 和用例。在大多数情况下,如果您使用 Nuxt.js,您可能会选择 target: static
、ssr: true
路线。
这将:
- 在构建期间生成完全静态的页面,您将能够在 Netlify、Vercel 或类似平台上托管它
- 获取静态文件后,用一些 JS 来润色静态内容
- 之后具有 Vue 行为,作为经典 SPA(因此无需进一步的服务器调用即可管理路由)
此行为称为同构或通用,更多信息请参见链接讨论。
Gatsby 和 Next.js 的工作方式有些相似。有一些细微差别,但在这 3 个 AFAIK 中,一般情况在全球范围内是相同的。
SSG (Static Site Generators) 像 Gatsby 和 Next,什么他们所做的是基于 React 环境代码创建一个输出 HTML。这并不意味着该站点在交互方面是“静态的”。这意味着您请求的页面已经创建,因此您可以避免服务器中的响应和编译时间。
总结一下,给定一个“传统”/“老式”PHP 网站。例如,当您请求主页时,您的请求发送到服务器,服务器将 PHP 转换为 HTML(浏览器可以解析和打印的内容),然后您获得该页面。 Gatsby/Next 中省略了处理时间,因为 HTML 已经创建。
当您在 Gatsby/Next 中构建您的网站时,将从源中检索数据(使用降价、CMS、API、JSON 等中的 GraphQL)并创建输出(这就是为什么有 /public
文件夹生成)。您所有的 JavaScript 和 React 都捆绑到输出 HTML 中,因此您的网站在用户交互方面将是“动态的”,React 是生态系统的一部分,因此您的副作用(由 [=11 触发) =] 挂钩)或您的 rehydration 流程(例如 useState
挂钩)将成为您网站的一部分。
解释为:
当您导航到另一个页面时,您正在请求一个已经构建和生成的页面,这就是速度如此之快的原因。