Vue vs React: философия и подходы
Два подхода
React — библиотека от Facebook. Vue — фреймворк от Эвана Ю.
Оба делают одно — реактивные UI. Но философия разная.
React: всё JavaScript
export function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Кликов: {count}
</button>
);
}
Разметка в JS. Всё — функции и объекты.
Vue: разделение
<script setup>
import { ref } from 'vue';
const count = ref(0);
</script>
<template>
<button @click="count++">Кликов: {{ count }}</button>
</template>
Разметка в HTML. Логика отдельно.
Ключевые отличия
| React | Vue | |
|---|---|---|
| Язык шаблонов | JSX | HTML |
| Реактивность | Явная (setState) | Автоматическая |
| Стили | CSS-in-JS | SFC (scoped) |
| Размер | ~45 КБ | ~35 КБ |
| Кривая обучения | Выше | Ниже |
| Гибкость | Максимум | Правила из коробки |
Кто использует
React: Facebook, Instagram, Netflix, Airbnb, Uber
Vue: Alibaba, GitLab, Adobe, BMW, Nintendo
Что общего
- Компонентный подход
- Виртуальный DOM
- Реактивность
- Хуки / Composables
- Большая экосистема
Когда React
- Огромное сообщество
- React Native для мобильных
- Больше вакансий
- Корпоративная стандартизация
- Максимальная гибкость
Когда Vue
- Быстрый старт
- Простой синтаксис
- Меньше boilerplate
- Хорошая документация
- Азиатский рынок
Что важно для перехода
Из React в Vue:
useState→refuseEffect→watch/watchEffectuseMemo→computed- JSX →
<template> - Context → provide/inject
Из Vue в React:
ref→useStatecomputed→useMemowatch→useEffect<template>→ JSX
Итог
Не спорь «что лучше». Оба хороши. React — гибче, Vue — проще. Знай оба — больше возможностей.
Дальше — реактивность: ref vs useState.