跳至主要內容

單頁應用程式

您可以透過在根佈局中停用 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 允許您新增一個 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>

預先渲染個別頁面

如果您希望某些頁面預先渲染,您可以僅針對應用程式的這些部分,重新啟用 ssrprerender

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

在 GitHub 上編輯此頁面