Учебник Svelte и SvelteKit для начинающих
Svelte — это компилируемый UI-фреймворк, который исчезает к моменту запуска: основную работу он делает на этапе сборки, а в браузер отдаёт компактный адресный JavaScript без виртуального DOM. Этот курс ведёт вас от первого компонента до полноценного приложения на SvelteKit.
Вы освоите систему рун Svelte 5 ($state, $derived, $effect), научитесь строить переиспользуемые компоненты, управлять общим состоянием и разворачивать приложения с файловой маршрутизацией, загрузкой данных и серверными формами. Каждый урок содержит разбор под капотом, запускаемые примеры на чистом JavaScript и ASCII-диаграммы.
Курс «Svelte и SvelteKit» состоит из 6 разделов и 24 уроков: Введение и компилятор, Реактивность и руны, Компоненты и пропсы, Логика шаблонов и события, Stores и управление состоянием и SvelteKit, роутинг и деплой. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение и компилятор
- Что такое Svelte: фреймворк, который исчезает
Svelte — это компилятор, а не рантайм-библиотека. Разбираем философию исчезающего фреймворка и хирургических обновлений DOM.
- Svelte против React и Vue: компилятор вместо виртуального DOM
Чем Svelte отличается от React и Vue: отказ от виртуального DOM в пользу скомпилированных адресных обновлений.
- Первый компонент: один файл .svelte
Структура файла .svelte: скрипт, разметка и изолированные стили в одном компоненте.
- Создание проекта: sv create и Vite
Создание Svelte-проекта командой sv create, работа на Vite с горячей перезагрузкой и сборка для прода.
- Что такое Svelte: фреймворк, который исчезает
2 Реактивность и руны
- Руна $state: реактивное состояние
Руна $state в Svelte 5: реактивное состояние, которое меняется как обычная переменная.
- Руна $derived: производные значения
Руна $derived: вычисляемые значения с мемоизацией вместо ручной синхронизации данных.
- Руна $effect: побочные эффекты
Руна $effect: побочные действия в ответ на изменение состояния, авто-зависимости и очистка.
- Ловушки реактивности и как их избегать
Частые ловушки реактивности Svelte: деструктуризация, снимки значений и руны в обычных файлах.
- Руна $state: реактивное состояние
3 Компоненты и пропсы
- Пропсы и руна $props
Руна $props: объявление входных данных компонента, значения по умолчанию и однонаправленный поток.
- События компонентов через колбэки
События компонентов в Svelte 5 через пропсы-колбэки вместо createEventDispatcher.
- Двусторонняя связь: руна $bindable
Руна $bindable: двусторонняя связь пропсов через директиву bind: и когда её применять.
- Сниппеты и children вместо слотов
Сниппеты Svelte 5 и проп children пришли на смену слотам для переиспользуемой разметки.
- Пропсы и руна $props
4 Логика шаблонов и события
- Логика шаблонов: if, each и await
Логические блоки {#if}, {#each} и {#await} и важность ключей в циклах.
- Обработка событий DOM
Обработка DOM-событий в Svelte 5 через атрибуты onclick, oninput, onsubmit.
- Связывание форм через bind:
Директива bind: для двусторонней связи полей форм с реактивным состоянием.
- Анимации и переходы
Встроенные переходы Svelte: fade, fly, slide для анимации появления и исчезновения элементов.
- Логика шаблонов: if, each и await
5 Stores и управление состоянием
- Общее состояние через .svelte.js-модули
Общее реактивное состояние между компонентами через руны в .svelte.js-модулях.
- Классические сторы: writable, readable, derived
Классические сторы Svelte: writable, readable, derived и когда они предпочтительнее рун.
- Контекст: setContext и getContext
Контекст setContext/getContext: передача данных по дереву компонентов без prop-drilling.
- Общее состояние через .svelte.js-модули
6 SvelteKit, роутинг и деплой
- Что такое SvelteKit
SvelteKit — метафреймворк над Svelte: роутинг, загрузка данных, SSR и адаптеры деплоя.
- Файловая маршрутизация
Файловая маршрутизация SvelteKit: папки в src/routes, +page.svelte, динамические сегменты и лейауты.
- Загрузка данных: функция load
Функция load в SvelteKit: загрузка данных страницы до рендера, +page.js против +page.server.js.
- Формы и form actions
Form actions в SvelteKit: обработка форм на сервере, прогрессивное улучшение и use:enhance.
- Деплой и адаптеры
Деплой SvelteKit через адаптеры: Vercel, Node, статический хостинг и режимы рендеринга.
- Что такое SvelteKit