SvelteKit може попередньо генерувати кожну сторінку під час збірки та записувати результат як звичайні файли через @sveltejs/adapter-static. Lobsite розміщує ці файли. Зберіть зі статичним адаптером, виконайте npx lobsite — і сайт доступний за адресою *.lobsite.app з HTTPS. Ця сторінка про повністю попередньо згенеровані сайти. Серверним маршрутам і діям форм потрібен хостинг із запуском SvelteKit на сервері.
Як це працює
- Перейдіть на статичний адаптер і ввімкніть попередню генерацію кожної сторінки (дивіться нижче), потім виконайте
npm run build. Сайт потрапить уbuild/. - Виконайте
npx lobsiteу проєкті. Команда розгортаєbuild/, а неstatic/чи.svelte-kit/. Перше розгортання не потребує облікового запису й діє 6 годин. - Збережіть сайт за посиланням для збереження в безкоштовному обліковому записі. Надалі
npm run build && npx lobsiteоновлює ту саму адресу.
adapter-static і попередня генерація
// svelte.config.js
import adapter from "@sveltejs/adapter-static";
export default {
kit: { adapter: adapter() },
};
// src/routes/+layout.js
export const prerender = true;
prerender = trueу кореневому макеті генерує кожну сторінку під час збірки. Якщо сторінку не можна попередньо згенерувати, збірка завершується помилкою та вказує її, тож неробоче не розгортається.fallback: "200.html"— для сторінок, які не можна попередньо згенерувати: SvelteKit записує оболонку200.html, а Lobsite віддає її для кожного шляху, що не є файлом, тож ці сторінки генеруються в браузері. Попередньо згенеровані сторінки все одно кращі для пошуку й першого завантаження.trailingSlashможна залишити типовим:/aboutзаписується якabout.htmlі віддається за/about.
Що виконується під час збірки, а що не може
Функції load, зокрема в +page.server.js, виконуються під час збірки попередньо згенерованої сторінки, тому дані з файлів чи API потрапляють у HTML. Динамічні маршрути знаходяться переходами за посиланнями сторінок; непов’язані перелічіть у prerender.entries. Без сервера не працюють дії форм, кінцеві точки +server.js, окрім попередньо згенерованих GET, хуки для кожного запиту й читання cookie. Контактну форму надсилайте на /_lobsite/forms/contact замість дії форми; дивіться форми.
Файли зберігаються за хешем. Повторне розгортання незміненого сайту завантажує 0 байтів.
Перегляньте перед публікацією. Відкотіть одним натисканням разом із перенаправленнями.
Кожен сайт отримує адресу *.lobsite.app із HTTPS від першого розгортання.
Спрямуйте форму на /_lobsite/forms/contact. Фільтрація спаму включена.
Перенаправлення, заголовки та форми зберігаються в lobsite.toml і супроводжують кожне розгортання.
Усі обмеження опубліковані, а кожна помилка підказує наступний крок.
Порівняння хостингів SvelteKit
| Lobsite | Vercel | Netlify | Cloudflare Pages | |
|---|---|---|---|---|
Попередньо згенеровані сайти (adapter-static) |
Так | Так | Так | Так |
| Серверний рендеринг, дії форм | Ні | Так | Так | Так |
| Збірка на сервері | Ні: ви розгортаєте build/ |
Так | Так | Так |
| Обліковий запис перед першим розгортанням | Ні: працює 6 годин, потім можна зберегти безкоштовно | Так | Так | Так |
| Форми без бекенду | Так, після додавання сайту до облікового запису | Ні | Так | Ні |
| Власний домен | Так, безкоштовно | Так | Так | Так |
Якщо застосунок генерує сторінки на запит, використовуйте адаптер для хостингу, що його запускає. Якщо всі сторінки можна попередньо згенерувати, як у маркетингових сайтах, блогах і документації, Lobsite розміщує їх однією командою та завантажує лише файли, змінені кожною збіркою.
Поширені запитання
Який адаптер SvelteKit використовувати для Lobsite?
@sveltejs/adapter-static із попередньою генерацією кожної сторінки. adapter-auto й платформні адаптери збирають для серверів та функцій, які Lobsite не запускає.
Чи працює тут SvelteKit SPA з резервною сторінкою?
Так. Задайте adapter({ fallback: "200.html" }): Lobsite віддає 200.html зі статусом 200 для кожного шляху, що не є файлом, а роутер SvelteKit генерує сторінку в браузері. Попередньо згенеровані сторінки віддаються як є.
Чому збірка SvelteKit завершилася помилкою prerender?
Сторінка не змогла згенеруватися під час збірки, часто через читання url.searchParams, cookie чи дію форми. Перенесіть цю роботу в браузер або у функцію load, яка використовує лише доступні під час збірки дані.
Чи працюють переходи SvelteKit після попередньої генерації?
Так. Попередньо згенеровані сторінки завантажують клієнт SvelteKit, який після першої сторінки перебирає навігацію, тому посилання й далі змінюють сторінки без повного перезавантаження.