Как ответить
Последняя версия Vue, с которой я работал на коммерческом проекте — Vue 3.4 (использовали Composition API, script setup, Vite в качестве сборщика). В основном я писал компоненты с использованием ref, reactive, computed, watch и props. Параллельно разбирался с Options API при поддержке старого кода.
Например, один из типовых компонентов — форма обратной связи с валидацией. Я организовывал логику через Composition API:
<script setup>
import { ref, computed } from 'vue'
const form = ref({ name: '', email: '' })
const errors = ref({})
const isValidEmail = computed(() => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.value.email))
function submitForm() {
if (!isValidEmail.value) {
errors.value.email = 'Некорректный email'
return
}
// отправка данных
}
</script>Также работал с Vue Router 4 — настраивал динамические маршруты, lazy-loading компонентов через defineAsyncComponent. Для управления состоянием использовали Pinia (хранилище корзины и пользователя). Разбирал передачу данных через provide/inject для глубоко вложенных компонентов и emit для событий вверх.
Из инструментов — Vite (быстрая сборка, HMR), TypeScript (типизация пропсов, emits), ESLint + Prettier. Ещё участвовал в миграции небольшого модуля с Vue 2 на Vue 3 — менял устаревшие API (например, замена $listeners на $attrs).
В целом, я уверенно работаю с Composition API, понимаю реактивность Vue 3 и умею объяснять разницу между Options API и Composition API. Сейчас стараюсь глубже изучить Suspense и Teleport.