1. Быстрый старт и архитектура Vue 3
Быстрый старт и архитектура Vue 3
Представьте: вы только что получили заказ на MVP-приложение — клиентская панель с авторизацией, списком заказов и графиками. У вас есть бэкенд на Node или Laravel, и вам нужно «повесить» на него фронтенд за неделю. Vue 3 — один из немногих фреймворков, который позволяет fullstack-разработчику перейти от нуля к работающему интерфейсу за считанные часы, а не дни.
Почему Vue 3, а не React или Angular
Когда вы работаете fullstack, каждый час фронтенд-разработки — это час, который вы не тратите на бэкенд, DevOps или архитектуру. Vue 3 выигрывает здесь по нескольким причинам:
| Критерий | Vue 3 | React | Angular | |---|---|---|---| | Порог входа | Низкий — HTML-шаблоны | Средний — JSX | Высокий — TypeScript, DI | | Размер бандла | ~33 КБ (gzip) | ~42 КБ (gzip) | ~143 КБ (gzip) | | Интеграция с бэкендом | Через Vite за минуты | CRA/Vite | CLI-генерация | | Скорость прототипирования | Очень высокая | Высокая | Средняя |
Vue 3 не требует изучения нового синтаксиса шаблонов (как JSX в React) и не навязывает жёсткую архитектуру (как Angular). Вы пишете обычный HTML, добавляете директивы — и получаете реактивный интерфейс.
Установка и структура проекта
Для создания проекта используется Vite — сборщик, который заменил Webpack в экосистеме Vue. Он стартует за секунды вместо десятков секунд.
После выполнения этих команд вы получите работающий dev-сервер на http://localhost:5173. Откройте проект в редакторе — перед вами такая структура:
Ключевой файл — main.js. Это точка входа, где создаётся приложение Vue:
Функция createApp() создаёт экземпляр приложения, а .mount('#app') привязывает его к DOM-элементу с id="app" в index.html. Всё, что внутри этого элемента, управляется Vue.
Архитектура однофайлового компонента (SFC)
Каждый .vue-файл — это однофайловый компонент (Single File Component, SFC). Он объединяет три секции:
Три секции — это не просто удобство, а архитектурный принцип. Шаблон описывает что показать, скрипт описывает как работает, стили описывают как выглядит. Атрибут scoped в <style> гарантирует, что стили не «протекут» в другие компоненты.
> Ключевое отличие Vue от React: в Vue шаблон — это HTML с директивами, а не JavaScript-функция, возвращающая разметку. Это делает код более читаемым для тех, кто привык работать с HTML.
Реактивность в двух словах
Реактивность — это механизм, при котором изменение данных автоматически обновляет отображение в браузере. В Vue 3 она построена на JavaScript Proxy.
Когда вы меняете count.value или user.name, Vue автоматически обновляет все места в шаблоне, где эти данные используются. Вам не нужно вручную вызывать render() или setState() — это ключевое отличие от ванильного JavaScript.
Мы подробно разберём реактивность в следующей статье, а пока достаточно понимать: данные в Vue — это не просто переменные, а «умные» объекты, которые отслеживают своё изменение.
Директивы — связка данных и DOM
Директивы — это специальные атрибуты Vue, которые начинаются с префикса v-. Они связывают данные с HTML-разметкой.
Сокращения: :src вместо v-bind:src, @click вместо v-on:click. В реальном коде вы почти всегда будете использовать короткую форму.
Жизненный цикл компонента
Каждый компонент проходит через стадии: создание → монтирование в DOM → обновление → уничтожение. Vue предоставляет хуки жизненного цикла (lifecycle hooks), чтобы вы могли выполнять код на каждой стадии.
Для fullstack-разработчика самый важный хук — onMounted. Именно здесь вы будете загружать данные с бэкенда, инициализировать графики и настраивать WebSocket-подключения.
Первое приложение: счётчик с запросом к API
Закрепим на практике. Создадим компонент, который загружает список пользователей с публичного API и отображает его:
Этот компонент демонстрирует три ключевых паттерна, которые вы будете использовать в каждом проекте: реактивные переменные (ref), загрузку данных при монтировании (onMounted + fetch) и условный рендеринг (v-if / v-else).
Настройка окружения для production
Когда прототип готов, соберите проект для продакшена:
Vite создаст оптимизированные файлы в папке dist/. Эти файлы — статика, которую можно отдать через Nginx, S3 или любой статический хостинг. Для интеграции с бэкендом на Laravel или Express достаточно настроить проксирование API-запросов.
В vite.config.js можно задать базовый путь и прокси:
Теперь запросы на /api/users в dev-режиме будут автоматически перенаправляться на ваш бэкенд на порту 3000 — без проблем CORS.
Что мы получили
На этом этапе у вас есть работающее Vue 3-приложение с Vite, вы понимаете структуру SFC-компонентов, знаете базовые директивы и жизненный цикл. Этого достаточно, чтобы начать строить интерфейс для любого бэкенда. В следующей статье мы погрузимся в Composition API и разберём, как управлять сложной реактивностью — основу любого административного интерфейса.