slide-4e3a334f-b810-4475-a268-d8b2767d7c89

React vs Vue

В этой статье я попробую поделиться своими мыслями касательно того, какой фреймворк лучше, удобнее для разработки и проще для понимания. Сразу сделаю оговорку: я не буду опираться на внешние факторы, такие как рынок труда или количество вакансий. Я сделаю упор на технической части и самом процессе разработки. Первое, что хотелось бы сказать: новичкам и бизнесу я бы рекомендовал Vue. Многие решения уже заложены «из коробки»: например, маршрутизация и собственный state manager. Тут не буду останавливаться подробно, так как в большей степени это дело вкуса, но стоит учитывать, насколько хорошо эти инструменты интегрированы в экосистему. А теперь перейду к фишкам фреймворков, к тому, что мне нравится. Организация кода. В React мне нравится гибкость в организации компонентов. Я имею в виду возможность создавать в одном файле несколько компонентов и экспортировать их. Vue в этом плане следует строгому принципу SFC (Single File Component): в файле с расширением .vue может лежать только один логический компонент (шаблон + скрипт + стили). Это накладывает дисциплину, но иногда хочется той самой react-свободы. Работа с данными. Что касается создания переменных и работы с ними, я бы отдал предпочтение Vue. Во Vue есть несколько способов создания реактивных данных, одно из самых распространенных — это функция ref(). Если коротко: в отличие от useState в React, если мы хотим изменить значение, мы просто присваиваем новое: const count = ref(0); count.value = 5; // присвоение И нам не надо вызывать функцию setState для обновления состояния, что вызывает лишние рендеры компонента. Кстати, если вы сразу вспомнили про useMemo, то во Vue есть аналог — computed. Это отдельная большая тема про реактивность и вычисляемые значения. Рендеринг и производительность. Плавно подойдя к теме рендеров, тут с практической точки зрения я не вижу явного преимущества одного перед другим в повседневных задачах. Оба работают с Virtual DOM. Однако ключевое отличие в том, что в React при изменении состояния по умолчанию перерендериваются все дочерние компоненты. Vue же благодаря своей системе реактивности отслеживает зависимости точнее и перерендеривает только тот компонент, где произошло изменение, и его непосредственные зависимости. Соответственно, в React разработчик вынужден вручную кэшировать компоненты и значения с помощью React.memo, useMemo, useCallback, чтобы избежать лишней работы. Во Vue ручная мемоизация требуется гораздо реже. Синтаксис и шаблоны. Тут вкусовщина, но добавлю. React использует JSX которая содержит в себе логику и разметку, что для многих плюс. Vue использует HTML-шаблоны и директивы, что позволяет писать условия прямо в тегах. Итог. Если говорить в целом о React и Vue, они во многом схожи: оба приветствуют компонентный подход, принципы и паттерны проектирования у них похожи. React дает свободу выбора инструментов и стиля кодинга, из-за чего сообщество придумало множество архитектурных решений. Vue же более строгий — он предлагает единый стандартный путь решения задач, что упрощает работу в команде.