Svelte и SvelteKit: кабинет читателя
Развиваем учебный проект «Маршрут» в 14 последовательных уроках. Каждый шаг использует результат предыдущего: прежние объекты, идентификаторы и правила остаются узнаваемыми. Серия входит в прикладной продуктовый маршрут.
Предпосылки: HTML, JavaScript, TypeScript, основы HTTP; Svelte 5, выбранная ветка SvelteKit 2 (>=2.16 <3). Проверка API по официальным источникам проведена 11 октября 2026 года. Установка, программы, сборка, тесты и размещение не выполнялись. example_execution: not_run; описанные ответы и экраны ожидаемые.
Учебные сессии и данные в памяти одного процесса; после перезапуска исчезают. Внешняя регистрация, восстановление, постоянная база и размещение отсутствуют.
Оглавление
| № | Урок | Результат |
|---|---|---|
| 1 | Кабинет читателя и границы SvelteKit | Задаём модель «Маршрута», дерево проекта и границы серверного и браузерного состояния. |
| 2 | Состояние и вычисления в Svelte 5 | Добавляем локальные закладки, завершение и вычисляемый прогресс через runes. |
| 3 | Компонент карточки и обратные вызовы | Выносим карточку урока в компонент с типизированными props и callback без скрытого владения прогрессом. |
| 4 | Маршруты уроков и общая компоновка | Создаём адресный каталог, динамическую страницу урока и layout кабинета. |
| 5 | Загрузка страницы и серверные данные | Разделяем universal load и server load, сериализацию и публичную проекцию личного состояния. |
| 6 | SSR, prerender и личный кабинет | Выбираем режим формирования HTML для публичного каталога и персональных страниц. |
| 7 | Браузерные эффекты и сохранение предпочтений | Сохраняем компактный вид в localStorage после onMount без обращения к window при SSR. |
| 8 | Поиск и фильтры в URL | Делаем фильтр каталога воспроизводимым по ссылке и сохраняем нативную GET-форму. |
| 9 | Серверные действия для закладок | Описываем POST-команду с проверкой сессии, идентификатора и желаемого состояния. |
| 10 | Проверка формы и восстановление ввода | Добавляем профиль с серверной валидацией, сохранённым вводом и доступной ошибкой поля. |
| 11 | Улучшение формы через use:enhance | Добавляем ожидание POST и обновление страницы, сохраняя работу формы без JavaScript. |
| 12 | Сессия и владелец истории читателя | Связываем серверный репозиторий с непрозрачной сессией и проверяем владельца каждого действия. |
| 13 | Ошибки кабинета и доступный интерфейс | Различаем ожидаемый отказ и сбой сервера, сохраняем семантику кнопок, статусы и фокус. |
| 14 | Передача проекта «Маршрут» | Собираем конечные исходники, фиксируем ограничения хранения, сессий и будущего выпуска. |
Комплект проекта
Скачать исходники «Маршрут». Архив содержит конечное состояние кабинета, README и HANDOFF.md. Фрагменты в уроках объясняют его постепенное построение. Ожидаемые данные имеют явную подпись, результатов исполнения пока нет.