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

Vue 3: Обзор

Vue 3 — прогрессивный фреймворк для современного веба 🟢

Заголовок раздела «Vue 3 — прогрессивный фреймворк для современного веба 🟢»

Добро пожаловать в самый дружелюбный JavaScript-фреймворк! Vue 3 — это не просто инструмент, это философия постепенного усложнения. Начинаешь с простого скрипта в HTML, дорастаешь до полноценного SPA с SSR — и на каждом шаге Vue рядом! 🚀


Vue 3 вышел в сентябре 2020 года и принёс революционные изменения:

  • Composition API — логика по фичам, а не по типам опций
  • Лучший TypeScript — написан с нуля на TS
  • Меньший бандл — tree-shaking из коробки
  • Быстрее — переписанный рендерер, лучше Virtual DOM
  • Fragments — несколько корневых элементов
  • Teleport — рендеринг вне дерева компонентов
  • Suspense — асинхронные компоненты с загрузкой

Options API (Vue 2) группировал код по типу: все data в одном месте, все methods в другом. Для маленьких компонентов — окей. Для больших — хаос: чтобы понять одну фичу, прыгаешь по всему файлу.

Composition API группирует код по фиче: всё что связано с авторизацией — в одном месте, всё что связано с корзиной — в другом.

Options API (Vue 2) Composition API (Vue 3)
───────────────────── ─────────────────────────
data() { // === ФИЧА: авторизация ===
user: null, ←──┐ const user = ref(null)
cart: [], ←──│──┐ const login = async () => {}
} │ const logout = () => {}
methods: { │
login() {}, ──────┘ // === ФИЧА: корзина ===
logout() {}, const cart = ref([])
addToCart() {}, ──────┐ const addToCart = (item) => {}
} └ const total = computed(() => {})
computed: {
total() {}, ──────── // Всё вместе, но разбросано!
}

ИнструментНазначениеВерсия
ViteСборщик/девсервер5.x
Vue Router 4Клиентская маршрутизация4.x
PiniaУправление состоянием2.x
VitestUnit тестирование1.x
VueUseКоллекция composables10.x
Nuxt 3Full-stack фреймворк3.x
VolarVS Code плагинlatest
Vue DevToolsДебаггер в браузере7.x

КритерийVue 3ReactAngular
Кривая обучения🟢 Пологая🟡 Средняя🔴 Крутая
Размер~34KB~44KB~143KB
ЯзыкJS/TSJSX/TSXTypeScript
СостояниеPiniaRedux/ZustandNgRx/Services
ШаблоныHTML-подобныеJSXHTML+директивы
РеактивностьProxy-baseduseState hooksZone.js
SSRNuxt 3Next.jsAngular Universal
МобильныйIonic/CapacitorReact NativeIonic
КомпанииAlibaba, GitLabMeta, AirbnbGoogle, Enterprise

Vue 3 — отличный выбор когда:

  • Команда не хочет глубоко погружаться в TypeScript сразу
  • Нужен быстрый старт с хорошей документацией
  • Проект средней сложности (SPA, дашборды, интерактивные сайты)
  • Важна читаемость шаблонов для дизайнеров/верстальщиков
  • Нужна гибкость: от простого скрипта до full-stack (Nuxt)

Лучше рассмотреть альтернативы когда:

  • Огромная enterprise команда с жёсткими стандартами → Angular
  • Нужна максимальная экосистема/найм → React
  • Мобильное приложение → React Native

УрокТема
1introductionЧто такое Vue 3: архитектура, MVVM, Virtual DOM
2setup-viteУстановка через Vite, структура проекта, SFC
3composition-apiComposition API: script setup, defineProps, defineEmits
4options-apiOptions API: data, methods, computed, watch
5reactivityРеактивность: ref, reactive, readonly, toRefs
6computed-watchcomputed и watch: watchEffect, deep, immediate
7templates-directivesШаблоны и директивы: v-if, v-for, v-bind, v-model
8componentsКомпоненты: регистрация, динамические, KeepAlive
9props-emitsProps и Emits: defineProps, withDefaults, v-model
10slotsСлоты: default, named, scoped slots
11lifecycle-hooksLifecycle Hooks: onMounted, onUpdated, onUnmounted
12composablesComposables: useCounter, useFetch, useLocalStorage
13provide-injectProvide / Inject: dependency injection в Vue
14vue-routerVue Router 4: routes, router-link, router-view
15router-advancedРоутинг: Guards, Lazy Loading, meta
16piniaPinia: defineStore, state, getters, actions
17pinia-advancedPinia: subscriptions, plugins, persist
18vuexVuex 4: state, mutations, actions, modules
19transitions-animationsПереходы: Transition, TransitionGroup, CSS
20teleport-suspenseTeleport и Suspense: модальные окна, async
21custom-directivesКастомные директивы: v-focus, v-tooltip
22async-componentsАсинхронные компоненты: defineAsyncComponent
23renderless-componentsRenderless компоненты: паттерн compound
24testing-vitestТестирование: Vitest + Vue Test Utils
25testing-e2eE2E: Playwright + Cypress
26ssr-vueSSR: Nuxt 3, Vite SSR, hydration
27performanceПроизводительность: v-memo, shallowRef, lazy
28typescript-vueTypeScript в Vue 3: типы props, emits, slots
29patternsПаттерны: composables, render functions, plugin
30vue3-vs-reactVue 3 vs React: полное сравнение

<!-- index.html — Vue без сборщика! -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">{{ message }}</div>
<script>
Vue.createApp({ data() { return { message: 'Привет, Vue 3! 🟢' } } }).mount('#app')
</script>

Или через Vite (правильный путь для реальных проектов):

Окно терминала
npm create vue@latest my-app
cd my-app
npm install
npm run dev

Мы пройдём путь от Привет, мир! до полноценного приложения с роутингом, состоянием и тестами. Каждый урок — это теория + практика + интерактивный плейграунд прямо в браузере.

Не бойся экспериментировать — Vue прощает ошибки и подсказывает решения через понятные сообщения об ошибках! 💪

Поехали! 🚀