Перейти к содержимому

Одностраничные приложения

Вы можете превратить любое приложение SvelteKit, использующее любой адаптер, в полностью клиентски рендеримое одностраничное приложение (SPA), отключив SSR в корневом макете:

src/routes/+layout.js
export const ssr = false;

Если у вас нет серверной логики (т. е. файлов +page.server.js, +layout.server.js или +server.js), вы можете использовать adapter-static для создания SPA, добавив резервную страницу.

Установите адаптер с помощью команды npm i -D @sveltejs/adapter-static, затем добавьте его в ваш файл svelte.config.js со следующими параметрами:

svelte.config.js
import adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: adapter({
fallback: '200.html' // может отличаться на разных хостах
})
}
};

Резервная страница — это HTML-страница, созданная SvelteKit на основе вашего шаблона страницы (например, app.html), которая загружает ваше приложение и перенаправляет на правильный маршрут. Например, Surge, статический веб-хостинг, позволяет добавить файл 200.html, который будет обрабатывать любые запросы, не соответствующие статическим активам или предварительно отрендеренным страницам.

На некоторых хостах это может быть index.html или что-то другое — уточните в документации вашей платформы.

Для запуска 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>

Предварительный рендеринг отдельных страниц

Заголовок раздела «Предварительный рендеринг отдельных страниц»

Если вы хотите, чтобы определённые страницы были предварительно отрендерены, вы можете снова включить ssr вместе с prerender только для этих частей вашего приложения:

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