跳至主要內容

建置和部署

單頁應用程式

在 GitHub 上編輯此頁面

你可以使用任何轉接器,將任何 SvelteKit 應用程式變成一個完全由用戶端呈現的單頁應用程式 (SPA),方法是在根佈局中停用 SSR

src/routes/+layout.js
ts
export const ssr = false;
src/routes/+layout.ts
ts
export const 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.js
ts
import adapter from '@sveltejs/adapter-static';
Cannot find module '@sveltejs/adapter-static' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-static' or its corresponding type declarations.
export default {
kit: {
adapter: adapter({
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>

預先渲染個別頁面

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

src/routes/my-prerendered-page/+page.js
ts
export const prerender = true;
export const ssr = true;
src/routes/my-prerendered-page/+page.ts
ts
export const prerender = true;
export const ssr = true;