单页应用
通过在根布局中禁用 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' // 可能因主机而异
})
}
};fallback 页面是 SvelteKit 根据您的页面模板(例如 app.html)创建的 HTML 页面,用于加载您的应用并导航到正确的路由。例如静态网站托管服务 Surge,允许您添加一个 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;上一页 下一页