跳至主要内容

单页应用

你可以通过在根布局中禁用 SSR,将使用任何适配器的任何 SvelteKit 应用转换为完全客户端渲染的单页应用 (SPA)

src/routes/+layout
export const const ssr: falsessr = false;

在大多数情况下,不建议这样做:它会损害 SEO,往往会降低感知性能,并且如果 JavaScript 失败或被禁用,会使你的应用无法访问用户(这种情况比你想象的更常见)。

如果你没有任何服务器端逻辑(即 +page.server.js+layout.server.js+server.js 文件),你可以使用adapter-static 通过添加一个后备页面来创建你的 SPA。

用法

使用 npm i -D @sveltejs/adapter-static 安装,然后使用以下选项将适配器添加到你的 svelte.config.js

svelte.config
import import adapteradapter from '@sveltejs/adapter-static';

export default {
	
kit: {
    adapter: any;
}
kit
: {
adapter: anyadapter: import adapteradapter({ fallback: stringfallback: '200.html' // may differ from host to host }) } };

fallback 页面是由 SvelteKit 从你的页面模板(例如 app.html)创建的一个 HTML 页面,它加载你的应用并导航到正确的路由。例如 Surge,一个静态 Web 主机,允许你添加一个 200.html 文件来处理与静态资源或预渲染页面不对应的任何请求。

在某些主机上,它可能是 index.html 或其他完全不同的东西——请查阅你的平台文档。

请注意,无论paths.relative 的值如何,后备页面始终包含绝对资源路径(即以 / 而不是 . 开头),因为它用于响应对任意路径的请求。

Apache

要在Apache 上运行 SPA,你应该添加一个 static/.htaccess 文件来将请求路由到后备页面

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
	RewriteRule ^200\.html$ - [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /200.html [L]
</IfModule>

预渲染单个页面

如果你希望某些页面被预渲染,你可以为应用的这些部分重新启用 ssr 以及 prerender

src/routes/my-prerendered-page/+page
export const const prerender: trueprerender = true;
export const const ssr: truessr = true;

在 GitHub 上编辑此页面