SvelteKit 的核心提供了一个高度可配置的渲染引擎。本节描述了在讨论渲染时使用的某些术语。上述文档中提供了设置这些选项的参考。 ## CSR 客户端渲染(CSR)是使用 JavaScript 在网页浏览器中生成页面内容的过程。 在 SvelteKit 中,默认将使用客户端渲染,但您可以通过[在`csr = false`页面选项](page-options#csr)中关闭 JavaScript。 ## 边缘 边缘渲染指的是在靠近用户的内容分发网络(CDN)中运行应用程序。边缘渲染允许页面请求和响应的传输距离更短,从而提高延迟。 ## 补水 Svelte 组件存储一些状态,并在状态更新时更新 DOM。在 SSR 期间获取数据时,默认情况下 SvelteKit 会存储这些数据并将其与服务器端渲染的 HTML 一起传输到客户端。然后,组件可以使用这些数据在客户端初始化,而无需再次调用相同的 API 端点。Svelte 将检查 DOM 是否处于预期的状态,并在一个称为“水合”的过程中附加事件监听器。一旦组件完全水合,它们就可以像任何新创建的 Svelte 组件一样对其属性的变化做出反应。 在 SvelteKit 中,页面默认会进行激活,但您可以通过[使用`csr = false`页面选项](page-options#csr)关闭 JavaScript。 ## ISR 增量静态再生(ISR)允许您在访客请求页面时生成网站上的静态页面,无需重新部署。这可能与拥有大量页面的[SSG](#SSG)网站相比减少构建时间。您可以使用[ISR 与`adapter-vercel`](adapter-vercel#Incremental-Static-Regeneration)进行。 ## MPA 传统应用在服务器上渲染每个页面视图——例如用除 JavaScript 以外的语言编写的应用——通常被称为多页面应用(MPA)。 ## 预渲染 预渲染意味着在构建时计算页面内容并保存 HTML 以供显示。这种方法与传统服务器端渲染页面具有相同的优点,但避免了为每位访客重新计算页面,因此随着访客数量的增加,几乎可以免费扩展。代价是构建过程更昂贵,预渲染内容只能通过构建和部署应用程序的新版本来更新。 并非所有页面都可以预渲染。基本规则是:要使内容可预渲染,任何两个直接访问该内容的用户必须从服务器获得相同的内容,并且页面不得包含[操作](form-actions)。请注意,只要所有用户都将看到相同的预渲染内容,您仍然可以预渲染基于页面参数加载的内容。 预渲染页面不仅限于静态内容。如果从客户端获取用户特定数据并渲染,您可以构建个性化页面。但这需要遵守上述讨论的缺点,即不进行服务器端渲染的内容将带来的不利影响。 在 SvelteKit 中,您可以通过[“`prerender`页面选项](page-options#prerender)”和[`prerender`配置](configuration#prerender)在`svelte.config.js`中控制预渲染。 ## PWA 一个渐进式 Web 应用(PWA)是一个使用 Web API 和技术构建的应用,但其功能类似于移动或桌面应用。作为 PWA 提供的网站可以被安装,允许您在启动器、主屏幕或开始菜单中添加应用程序的快捷方式。许多 PWA 将利用[服务工作者](service-workers)来构建离线功能。 ## 路由 默认情况下,当您导航到新页面(通过点击链接或使用浏览器的前进或后退按钮)时,SvelteKit 将拦截尝试的导航并处理它,而不是允许浏览器向服务器发送请求以获取目标页面。然后,SvelteKit 将通过渲染新页面的组件来更新客户端显示的内容,该组件随后可以调用必要的 API 端点。这种在尝试导航时对客户端页面进行更新的过程称为客户端路由。 在 SvelteKit 中,默认将使用客户端路由,但您可以使用[`data-sveltekit-reload`](link-options#data-sveltekit-reload)来跳过它。 ## SPA 单页应用程序(SPA)是一种应用程序,其中所有对服务器的请求都加载单个 HTML 文件,然后根据请求的 URL 在客户端对请求的内容进行渲染。所有导航都在客户端通过称为客户端路由的过程处理,每页内容更新,而常见布局元素基本保持不变。SPA 不提供 SSR,因此性能和 SEO 特性较差。然而,一些应用程序受这些缺点的影响不大,例如登录后的复杂业务应用程序,其中 SEO 可能不是很重要,并且已知用户将从一致的计算环境中访问应用程序。 在 SvelteKit 中,您可以使用[adapter-static](single-page-apps)构建一个 SPA。 ## SSG 静态站点生成(SSG)是指每个页面都预先渲染的网站。完全预先渲染站点的优点是您不需要维护或支付服务器以执行 SSR。一旦生成,网站可以从 CDN 提供服务,从而实现出色的“首次字节时间”性能。这种交付模式通常被称为 JAMstack。 在 SvelteKit 中,您可以通过使用`adapter-static`或通过配置每个页面使用`prerender`页面选项或`prerender`配置来预渲染,在`svelte.config.js`中实现静态站点生成。 ## SSR 服务器端渲染(SSR)是在服务器上生成页面内容。SSR 通常更受 SEO 青睐。虽然一些搜索引擎可以索引客户端动态生成的内容,即使在这些情况下,也可能需要更长的时间。它还倾向于提高感知性能,并在 JavaScript 失败或禁用时使您的应用对用户可用(这种情况比您可能想象的要常见)。 在 SvelteKit 中,页面默认由服务器端渲染。您可以通过[在`ssr`页面选项](page-options#ssr)中禁用 SSR。