您可以使用任何适配器将任何 SvelteKit 应用转换为完全客户端渲染的单页应用程序(SPA),方法是在根布局中禁用 SSR: ```js /// file: src/routes/+layout.js export const ssr = false; ``` > \[注意\] 在大多数情况下,这不被推荐:它损害 SEO,倾向于减慢感知性能,并且如果 JavaScript 失败或被禁用(这种情况比您可能想象的要常见),会使您的应用对用户不可访问([更常见于您可能想象的情况](https://kryogenix.org/code/browser/everyonehasjs.html))。 如果您没有任何服务器端逻辑(即`+page.server.js`、`+layout.server.js`或`+server.js`文件),您可以使用[`adapter-static`](adapter-static)通过添加一个*后备页面*来创建您的 SPA。 ## 使用 安装 `npm i -D @sveltejs/adapter-static` 后,将适配器添加到您的`svelte.config.js`中,并使用以下选项: ```js // @errors: 2307 /// file: svelte.config.js import adapter from '@sveltejs/adapter-static'; export default { kit: { adapter: adapter({ fallback: '200.html' // may differ from host to host }) } }; ``` The `fallback` 页面是由 SvelteKit 从您的页面模板(例如 `app.html`)创建的 HTML 页面,用于加载您的应用程序并导航到正确的路由。例如 [Surge](https://surge.sh/help/adding-a-200-page-for-client-side-routing),一个静态网站托管服务,允许您添加一个 `200.html` 文件来处理与静态资源或预渲染页面不对应的任何请求。 在某些主机上可能是 `index.html` 或其他完全不同的内容——请查阅您的平台文档。 > \[注意\] 注意,回退页面始终包含绝对资产路径(即以`/`开头,而不是`.`),无论[`paths.relative`](configuration#paths)的值如何,因为它用于响应对任意路径的请求。 ## Apache 要运行 SPA 在[Apache](https://httpd.apache.org/)上,您应该添加一个`static/.htaccess`文件以将请求路由到回退页面: ``` RewriteEngine On RewriteBase / RewriteRule ^200\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /200.html [L] ``` ## 预渲染单个页面 如果您想预渲染某些页面,可以为您的应用中的这些部分重新启用`ssr`和`prerender`: ```js /// file: src/routes/my-prerendered-page/+page.js export const prerender = true; export const ssr = true; ```