單頁應用程式
您可以透過在根佈局中停用 SSR,將任何使用任何轉接器的 SvelteKit 應用程式轉換為完全用戶端渲染的單頁應用程式 (SPA)。
src/routes/+layout
export const const ssr: false
ssr = 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 adapter
adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: any;
}
kit: {
adapter: any
adapter: import adapter
adapter({
fallback: string
fallback: '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>
預先渲染個別頁面
如果您希望某些頁面預先渲染,您可以僅針對應用程式的這些部分,重新啟用 ssr
和 prerender
src/routes/my-prerendered-page/+page
export const const prerender: true
prerender = true;
export const const ssr: true
ssr = true;
上一頁 下一頁