Темы
Модуль 0 — TypeScript для Vue
60.1
Типы-основаФундамент
0.2
GenericsComposables & API
0.3
Utility types: Partial, Required, Pick, Omit, Record, ReadonlyProps & State
0.4
Conditional types, infer, mapped typesПродвинутые composables
0.5
Type guards, discriminated unions, narrowingБезопасные API composables
0.6
defineProps и defineEmits с TypeScriptТипобезопасные компоненты
Модуль 1 — Архитектура Vue
91.1
Feature-based vs Layer-basedОрганизация кода
1.2
Слои приложенияРазделение ответственностей
1.3
Feature-Sliced Design для VueАрхитектурная методология
1.4
Компонентное мышление: Atomic Design в реальностиИерархия компонентов
1.5
Связь компонентов: props/emit vs provide/inject vs store vs composablesВыбор связи
1.6
Состояние: где хранить? Локальное vs composable vs Pinia storeСтратегия состояния
1.7
Главный файл проекта: main.ts, app plugins, router, piniaТочка входа
1.8
Error handling: глобальный vs локальный, error boundariesУстойчивость
1.9
Инверсия зависимостей в Vue: plugin-паттерн, provide/inject для сервисовТестируемость
Модуль 2 — Паттерны проектирования
102.1
Presentation vs ContainerРазделение
2.2
Renderless Components: абстракция логики без UIПереиспользование
2.3
Provider Pattern: provide/inject как DI-контейнерЗависимости
2.4
Observer/Event Bus: паттерны общения между компонентамиДекаплинг
2.5
Strategy Pattern: переключение поведения через composablesГибкость
2.6
Factory Pattern: динамическое создание компонентовДинамические UI
2.7
Adapter Pattern: обёртки над внешними APIИнтеграции
2.8
Compound Components: связанные компоненты (Tabs, Accordion, Form)Сложные UI
2.9
Command Pattern: undo/redo, очереди действийСостояние
2.10
HOC vs Composable vs Renderless: когда что выбратьПринцип выбора
Модуль 3 — Composables
93.1
Анатомия composableСтандарт
3.2
Composable с async: loading, error, retry, cancellationСетевые данные
3.3
Composable + Pinia: когда выносить в store, когда в composableГраница
3.4
Composable для форм: валидация, dirty/touched, submissionФормы
3.5
Composable для таблиц: pagination, sorting, filtering, selectionCRUD
3.6
Composable с WebSocket: подключение, реконнект, heartbeatReal-time
3.7
Composable для авторизации: guards, refresh token, permissionsAuth
3.8
Composable с localStorage/sessionStorage: реактивная обёрткаPersistence
3.9
Тестируемые composables: моки, stubs, изоляция зависимостейТесты
Модуль 4 — Vue Router
84.1
Route guards: beforeEach, beforeEnter, in-component guardsАвторизация
4.2
Nested routes и layouts: вложенные router-viewСтруктура страниц
4.3
Dynamic routes, lazy loading, code splittingПроизводительность
4.4
Navigation types: push, replace, go — программная навигацияКонтроль
4.5
Route meta: типизированные мета-поля, custom propertiesКонфигурация
4.6
Transitions между маршрутами: анимации страницUX
4.7
Scroll behavior, data prefetchingПользовательский опыт
4.8
Router + Store: sync state, guards читают storeИнтеграция
Модуль 5 — Тестирование
85.1
Vitest: настройка, базовые assertion, mockingФундамент
5.2
Vue Test Utils: mount, shallowMount, find, triggerКомпоненты
5.3
Тестирование composables в изоляцииComposables
5.4
Тестирование компонентов с PiniaStore
5.5
Тестирование компонентов с Vue RouterРоутинг
5.6
Mocking API: MSW (Mock Service Worker)Сетевые запросы
5.7
Snapshot testing: когда полезен, когда вреденСтратегия
5.8
E2E: введение в Playwright для VueE2E
Модуль 6 — Производительность
66.1
Reactivity under the hood: Proxy, dependency trackingПонимание
6.2
v-memo, shallowRef, shallowReactive, markRawОптимизация
6.3
Code splitting и lazy loading: async components, dynamic importБандл
6.4
Virtual scrolling для больших списковUI
6.5
SSR basics: Nuxt 3 введениеСерверный рендеринг
6.6
Lighthouse: аудит, метрики, типичные проблемыДиагностика