SvelteKit 提供可配置的渲染,允许您以多种方式构建和部署项目。您可以使用 SvelteKit 构建以下所有类型的应用程序以及更多。渲染设置不是互斥的,您可以选择以最佳方式渲染应用程序的不同部分。 如果您没有特定的方式来构建您的应用程序,请不要担心!您的应用程序的构建、部署和渲染方式由您选择的适配器以及少量配置控制,这些都可以稍后更改。无论您选择哪种项目类型,[项目结构](project-structure)和[路由](glossary#Routing)都将保持不变。 ## 默认渲染 默认情况下,当用户访问网站时,SvelteKit 将使用[服务器端渲染(SSR)](glossary#SSR)渲染第一个页面,并使用[客户端渲染(CSR)](glossary#CSR)渲染后续页面。使用 SSR 进行初始渲染可以提高 SEO 和初始页面加载的感知性能。然后客户端渲染接管并更新页面,无需重新渲染常见组件,这通常更快,并且在页面间导航时消除了闪烁。使用这种混合渲染方法构建的应用程序也被称为[过渡应用程序](https://www.youtube.com/watch?v=860d8usGC0o)。 ## 静态站点生成 您可以使用 SvelteKit 作为[静态站点生成器(SSG)](glossary#SSG),它使用[`adapter-static`](adapter-static)通过静态渲染完全[预渲染](glossary#Prerendering)您的站点。您还可以使用[预渲染选项](page-options#prerender)仅预渲染一些页面,然后选择不同的适配器以动态服务器渲染其他页面。 工具仅用于静态站点生成可能更有效地在构建过程中扩展预渲染过程,当渲染大量页面时。当处理非常大的静态生成站点时,如果您使用[增量静态重生成(ISR)](adapter-vercel#Incremental-Static-Regeneration),可以避免长时间构建时间。与专门构建的 SSG 相比,SvelteKit 允许在不同页面上混合和匹配不同的渲染类型。 ## 单页应用程序 [单页应用程序(SPAs)](glossary#SPA)仅使用[客户端渲染(CSR)](glossary#CSR)。您可以使用 SvelteKit[构建单页应用程序(SPAs)](single-page-apps)。与所有类型的 SvelteKit 应用程序一样,您可以在 SvelteKit 中编写后端或[其他语言或框架](#Separate-backend)。如果您正在构建没有后端或[独立后端](#Separate-backend)的应用程序,您可以简单地跳过并忽略文档中关于`服务器`文件的讨论。 ## 多页面应用 SvelteKit 通常不用于构建[传统多页应用](glossary#MPA)。然而,在 SvelteKit 中,您可以通过[`csr = false`](page-options#csr)移除页面上的所有 JavaScript,这将使后续链接在服务器上渲染,或者您可以使用[`data-sveltekit-reload`](link-options#data-sveltekit-reload)在服务器上渲染特定链接。 ## 分离后端 如果您的后端是用其他语言编写的,例如 Go、Java、PHP、Ruby、Rust 或 C#,您有几种方法可以部署您的应用程序。最推荐的方式是将您的 SvelteKit 前端与后端分开部署,使用`adapter-node`或无服务器适配器。一些用户更喜欢不使用单独的进程来管理和决定将应用程序作为由后端服务器提供的[单页应用程序(SPA)](single-page-apps)进行部署,但请注意,单页应用程序的 SEO 和性能特性较差。 如果您使用外部后端,可以简单地跳过并忽略文档中关于`服务器`文件的说明。您可能还需要参考[有关如何调用单独后端的常见问题解答](faq#How-do-I-use-a-different-backend-API-server)。 ## 无服务器应用 SvelteKit 应用程序在无服务器平台上运行简单。默认零配置适配器将自动在多个支持的平台运行您的应用程序,或者您可以使用[适配器-vercel](adapter-auto)、[`adapter-netlify`](adapter-vercel)、[`adapter-cloudflare`](adapter-netlify)来提供特定平台的配置。此外,[社区适配器](https://sveltesociety.dev/packages?category=sveltekit-adapters)允许您将应用程序部署到几乎任何无服务器环境中。其中一些适配器,如[`适配器-vercel`](adapter-vercel)和[`适配器-netlify`](adapter-netlify),提供`边缘`选项,以支持[边缘渲染](glossary#Edge)以改善延迟。 ## 您的服务器 您可以使用[`adapter-node`](adapter-node)部署到您自己的服务器或 VPS。 ## 容器 您可以使用[`adapter-node`](adapter-node)在 Docker 或 LXC 等容器中运行 SvelteKit 应用。 ## 图书馆 您可以使用[`@sveltejs/package`](packaging)插件通过在运行[`sv create`](/docs/cli/sv-create)时选择库选项来创建一个可以被其他 Svelte 应用使用的库。 ## 离线应用 SvelteKit 完全支持 [服务工作者](service-workers),让您能够构建多种类型的应用,例如离线应用和 [渐进式 Web 应用](glossary#PWA)。 ## 移动应用 您可以使用[SvelteKit SPA](single-page-apps)通过[Tauri](https://v2.tauri.app/start/frontend/sveltekit/)或[Capacitor](https://capacitorjs.com/solution/svelte)将其转换为移动应用。两种平台都可通过插件提供移动功能,如相机、地理位置和推送通知。 这些移动开发平台通过启动本地 Web 服务器并在手机上像静态主机一样提供服务来工作。您可能会发现[`bundleStrategy: 'single'`](configuration#output)是一个有助于限制请求数量的有用选项。例如,在撰写本文时,Capacitor 本地服务器使用 HTTP/1,这限制了并发连接的数量。 ## 桌面应用程序 您可以使用[SvelteKit SPA](single-page-apps)与[Tauri](https://v2.tauri.app/start/frontend/sveltekit/)、[Wails](https://wails.io/docs/guides/sveltekit/)或[Electron](https://www.electronjs.org/)将其转换为桌面应用程序。 ## 浏览器扩展 您可以使用[`adapter-static`](adapter-static)或[社区适配器](https://sveltesociety.dev/packages?category=sveltekit-adapters)来构建针对浏览器扩展的特定适配器。 ## 嵌入式设备 由于其高效的渲染,Svelte 可以在低功耗设备上运行。嵌入式设备如微控制器和电视可能会限制并发连接的数量。为了减少并发请求数量,您可能会发现在此部署配置中[`bundleStrategy: 'single'`](configuration#output)是一个有用的选项。