Skip to main content

Single-page apps

您可以使用任何适配器将任何 SvelteKit 应用转换为完全客户端渲染的单页应用程序(SPA),方法是在根布局中禁用 SSR:

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 }) } };

The fallback 页面是由 SvelteKit 从您的页面模板(例如 app.html)创建的 HTML 页面,用于加载您的应用程序并导航到正确的路由。例如 Surge,一个静态网站托管服务,允许您添加一个 200.html 文件来处理与静态资源或预渲染页面不对应的任何请求。

在某些主机上可能是 index.html 或其他完全不同的内容——请查阅您的平台文档。

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

Apache

要运行 SPA 在Apache上,您应该添加一个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>

预渲染单个页面

如果您想预渲染某些页面,可以为您的应用中的这些部分重新启用ssrprerender

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

Edit this page on GitHub llms.txt