Как стать автором
Обновить

Комментарии 82

Слишком поверхностно, хотелось бы 10-часовую версию

Вы хотели сказать, десятичастную?

Длинный промпт составляли для этой статьи?

Везде всем мерещатся нейросети! Даже если это и нейросеть, к пуговицам претензии есть? (Вот захочешь написать длинную обстоятельную статью, а тебя в LLM запишут. Йетить, её, джепити в качель.)))

бери это как комплимент))

Я только одного не понял: а зачем? Зачем, во-первых, сравнивать библиотеку и фреймворк (они по сути решают разные задачи), а, во-вторых, почему ретроспектива на 5 лет? Почему не на 10? Оба два уже были в 2015.

Я не шарю во фронте, только немного использовал Vue. Потому вопрос: а какие разные задачи они решают?

Они решают одинаковые задачи.

Задача Реакта - помочь велосипедисту сделать свой фреймворк, не заморачиваясь с реализацией шаблонизатора. Задача Вуя - помочь велосипедисту сделать свой ui-kit, не заморачиваясь с реализацией фреймворка.

под $mol должна быть картинка китайского убогого мангала с кривыми ножками

Для большинства крупных проектов даже на $mol пришлось бы разрабатывать свой UI Kit, чтобы соответствовать брендбуку и дизайн-макетам.

Супчик можно сварить и в кастрюле, но в мультиварке это сделать проще и быстрее. Но при чём тут она? Мы сравнивали кастрюлю с дырявой сковородой.

В мульварке получается однообразно и невкусно. Пример с ней не я приводил.

Я смотрю в кулинарии вы разбираетесь ещё меньше, чем во фреймворках. Мультиварка автоматизирует рутину, расширяя а не сужая возможности повара. В то же время кастрюля - это вечные приключения: то убежит, то пригорит, то выкипит, то переватрит.

Сами же переводите разговор на обсуждение $mol при любом упоминании его или меня, а потом жалуетесь, что вам его "впаривают под каждой статьёй". При этом по фактам всё равно ничего против его технического превосходства возразить не способны.

Сами же переводите разговор на обсуждение $mol при любом упоминании его

[картинка с гусем] А кто его упоминал, а?

Я смотрю в кулинарии вы разбираетесь ещё меньше, чем во фреймворках

Возможно, но ни разу не видел, что мультиварками профессиональные повара пользуются, а в кастрюле у меня всё отлично готовится без пригораний и выкипаний. Впрочем, это к теме статьи не относится и дальше аналогию развивать не стоит.

Профессиональные повара пользуются большими мультиварками, которые называются пищеварочными котлами. Дома же они, разумеется, пользуются домашними аналогами.

Если готовить еду уровня столовой, а не мишленовского ресторана, то да

Ага, я прям вижу, как мишленовский ресторан готовит еду для тысячи-другой посетителей международного форума в кастрюльках, а замшелая столовка в мухосранске покупает пищеварочные котлы за десятки килобаксов каждый.

«Десятки килобаксов» — смешные деньги для крупного предприятия. Столько даже самый простой автомобиль будет стоить. Тем более, что существуют кредит и лизинг. Да и не стоит сводить всё до крайности к абсурду вроде мухосранской столовки.

Библиотеку и фреймворк сравнивают, потому что они взаимоисключающие. Вы берете что-то одно и строите на этом проект, а дальше возникают нюансы.

ChatGPT постеснялся бы заявить что JSX это одновременно чистый js и чистый html/xml...

Да не, не постеснялся бы. У всех сеток в этом плане хорошо развито двоемыслие. Их нормально так накормили реактовской пропагандой. Поэтому у них и JSX сочетает преимущества JS и HTML, а шаблонизаторы сложны, ведь требуют изучения нового синтаксиса. И реакт очень удобен, ведь позволяет вручную управлять рендерингом и мемоизацией, а вью годится только для студенческих поделок, ведь там рендеринг оптимизируется автоматически, что лишает разработчика контроля над кодом. Ну и всё в таком духе. Но стоит заставить сетки немного подумать, как, удивительно, выясняется, что единственное преимущество реакта - экосистема. И то условное, ведь большая часть экосистемы - это попытки сделать то, что во вью есть из коробки.

В небольших компаниях я работал с вью, в том же время в Сбере и ВТБ реакт был как стандарт, хотя фейсбук и нейронки им совсем не товарищи. Большинство моделей переобуваются по первому же намеку пользователя, если это не режим грубияна.

Не хватает голосовалки - кто использует react/vue/что-то еще.

Лично я использую Vue, при этом JavaScript практически не знаю.

не знаю за что минусуют, но меня тоже покорил Vue при том что в целом я далек от веба и js.
Идеей "подключи один файл и можешь делать вот такенные интерфейсы на вложенных v-for". А данные можно из вебсокета получать.

Возможно, оскорбились противники нетрадиционных ценностей те кто до сих пор не оценил удобство реактивных фреймворков.

Я, как бекендер, когда-то давно зацепил мир фронтенда сперва через ExtJS, затем AngularJS и Angular 2-8. Потом решил попробовать Vue 2, и он реально классный. Меня зацепило, я тут отношу себя к лагерю вьюшников :) Если делать какой очередной пет-проект с UI, только на нём.

Попробуйте опять Angular, только уже последней версии) Я лично наоборот с Vue перешёл на Angular. Просто потому, что то, что на Vue требует костылей или сторонних зависимостей , на Angular просто работает из коробки. Там, где на Vue недоразвитая полузаброшенная UI библиотека или ленивый порт с реакта, там на Angular стандартный cdk и куча production-ready библиотек с typescript by design

Попробуйте опять Angular

Есть нюанс, Angular - вырвиглазный код.

Просто потому, что то, что на Vue требует костылей или сторонних зависимостей

Прям костылей?) Если вы такой умный, в чем проблема самому написать то, что нужно? А не лезть по каждому чиху в сторонние зависимости?

 на Angular просто работает из коробки

Так себе работает, ещё и вырвиглазный код.

А я несколько лет изучал React на кошках разных курсах, а работаю уже во втором крупном проекте на Vue, и могу сказать, что React доставляет боль😄

по опыту эксплуатации nuxt.js (и vue.js соответственно) скажу, что вас могут удивить некоторые неочевидные "официальные" выкрутасы.

так я узнал когда-то, что официальный плагин интернационализации интерфейсов для nuxt.js поддерживается одним японцем на добровольной оупенсорсной основе по вечерам после работы, и этот плагин активно ходит в объект window, чем напрочь ломает возможность i18n и SSR одновременно. В чём прикол тогда держать отдельно nuxt.js, если ssr теперь недоступен - не ясно.
Ишьюсы по конкретному плагину и всему фреймворку не закрываются годами.

А ещё ~2 года назад nuxt.js поехал на третью мажорную версию, и теперь это стало официальной отмазкой не закрывать эти многолетние баги - "nuxt.js 2 теперь легаси, мы не поддерживаем легаси".

Потому вопрос к другим комментаторам: в react и next такая же дичь, или там культура разработки выше и выделяемые человеческие ресурсы больше?

Что бы не держать одновременно плагин для vue и nuxt, можно взять плагин для nuxt который японец заботливо написал для вас "на добровольной оупенсорсной основе по вечерам после работы".

https://github.com/nuxt-modules/i18n/tree/v7

В таких обзорах надо сразу смотреть пункт "Масштабируемость проекта"

Если в очередной раз Vue "Подходит для малых и средних приложений", значит автор поверхностно надёргал старый материал, не соизволил поинтересоваться вполне доступной статистикой (использование в топ-1000 и топ-1000 сайтах от w3tech.com, картинки что-то не вставляются) и словит хейт и от вьюшников, и от реактеров, и от забытых ангулярщиков

Также Pinia это не официальный стейт менеджер, он не "интегрирован" с vue 3 и не так популярен как кажется. Основная мощь Vue - своя вполне самодостаточная система реактивности, о которой очень мало в статье и после которой стали говорить, что в Реакте нет реактивности.
Ну и слова "Тем не менее, Pinia перенял лучшие идеи Redux/Vuex" вызывают когнитивный диссонанс

Не учтены факты существования Vite, выходящих скоро Rolldown и Vapor, которые паровозом тянут и Vue, и показывают вектор развития Vue экосистемы (в сравнении с тупиком RSC и алчными методами монетизации своих маленьких пользователей монополистом Vercel) . А так же то, что Эван Ю в принципе - личность и самая, наверно, видная фигура в js world последних лет.

Настолько не официальный, что буквально живет на домене vuejs.org? https://pinia.vuejs.org/
Это давно официальная рекомендация, Vuex мёртв

Vuex мёртв, но комментатор имел в виду, что стейт-менеджер может в принципе не понадобиться.

Еще до отвала Vuex существовал Pinia, и развивался, насколько помню, отдельными разрабами. Как итог - с ростом популярности избавились от Vuex, а Pinia стала новым стандартом. Лично я выдохнул полной грудью, как по мне мутации это чистый сахар.

В статье целый раздел о Vite, который дружит с React (аватарка вью тебя выдает)

Используйте SolidJs. Реактивность как у вью - нет ререндеров, только точечное обновление, и синтпксис как у реакта. Реакт - это медленная, неэффективная шляпа, как с точки зрения разработки, так и с точки зрения производительности, требующая высокой ментальной нагрузки при использовании.

синтаксис как у реакта

А это типа преимущество?

Ну и вообще, когда там к вам deep reactivity завезут? Или до этой "революции" ещё десять лет ждать, как и с не менее революционными сигналами было?

React + MobX с 2016 года избавлен от главного недостатка - ущербной системы управления состоянием. Когда управление состоянием на себя берет MobX (локальное у компонента и глобально), то это уже небо и земля.

Мне нравится тем, что он минимально достаточен и близок к языку, что позволяет писать строго типизированные шаблоны.

Оба - фреймворки. Оба средней производительности, "good enough", заточены под все и ничего. SSR становится не актуальным, поисковики спокойно парсят CSR/SPA. Мобильная разработка становится не актуальной при развитии PWA. JSX это просто способ вызова функций, что гораздо лучше чем новый кастомный синтаксис для Javascript. Если нужен контроль, простота и производительность, то лучше так фронтэнд готовить.

Вот насчет PWA - у вас много установленных PWA приложений на телефоне? У меня например ровно одно - то которое я сам делаю. Поэтому не испытываю никаких иллюзий относительно того что его будут ставить другие, а так бы это был чудесный источник трафика. Человек просто устанавливает сайт как PWA и он постоянно у него на экране, напоминает о своем присутствии. Но в реальной жизни этого не происходит. Большинство людей вообще не знают что такое PWA, для них приложение это то что можно получить в сторе.

Всё когда-то было ново и неизведанно. И это не повод чтобы отказываться от прогресса. Если ваше приложение действительно нужно людям, то они в лепёшку разобьются чтобы его установить.

Российские банковские приложения - хороший пример.

Но прошло уже много лет с тех пор как были придуманы PWA. И они не оправдали возложенных на них надежд. Во многом благодаря стараниям Apple конечно, но не только.

Было бы мега-круто, если бы в браузерах была жирная кнопка - "установить как приложение". Такое есть в хроме, и только на десктопе, но кнопка не очень жирная, в целом ей мало кто пользуется. На десктопе к тому же это и не особо нужно.

Оправдали и продолжают развиваться. Яблоко должно страдать за то что тормозят инновации в угоду наживы. Их уже Евросоюз дожимает на установку сторонних броузеров. И пользователям было бы морально их бойкотировать за это.

В хроме на анроиде нормальная установка, а на десктопе у меня около 40 приложений PWA. Я знаете ли не люблю проприетерное ПО которое может делать что-то плохое на моем компе. А вот в безопасном броузерном сэндбоксе - пожалуйста!

Да почти все банковские приложения, например.

Ими невозможно пользоваться. Постоянно приходится вводить код из СМС.

Если бы проблемы не существовало, тот же сбер так усиленно не пытался бы пропихнуть свое приложение в сторы. И приложение действительно работает быстрее и удобнее.

От криворучия зависит. Большая часть "нативных" приложений на самом деле веб-вью.

Во первых нет другой альтернативы. Во вторых это к банкам вопрос, могли бы сессию и дольше сделать. Наприме в Гугль входишь и годами сессия активна.

Кроме гугла у нас других поисковиков нет? Яндекс вроде не умеет парсить без SSR.

Кроме того для пользователя это неудобно. Сначала появляется пустая страница с загрузкой и только потом приложение, а при SSR сразу рендериться страница без ожидания.

Мобильная разработка становится не актуальной при развитии PWA

PWA пока не дотягивают до нативных приложений, хотя в некоторых случаях это вполне неплохое решение.

Все основные умеют. Разница между загрузкой html и парсинга в dom и загрузкой js и создания dom дерева минимальна. Все зависит от размера и сложности библиотеки которая этим занимается. Fusor маленький и быстрый, поэтому разница по скорости с ssr будет не заметна.

Я, когда познакомился с Vue.js мне сразу его философия зашла и я понял, что именно на нём я хочу писать фронт в дополнении к беку. Именно сама концепция Single-File Component. Т.е. использование компонентов, в которых уже инкапсулирована логика <script setup>, HTML-шаблон <template> и стиль <style>.

Тут лучше привести аналогию:

Сборка компьютера: материнская плата + процессор + SSD + оперативная память

Сборка приложения Vue: Компонент_1 + Компонент_2 + Компонент_3 + Компонент_4

Во Vue используется паттерн из машиностроения, когда сложный механизм состоит из отдельно созданных узлов, а взаимодействуют они между собой через Refs или Pinia (зависит от случая).

Кстати фронт нашего любимого Хабра написан как раз на Vue

Нет. Vc.ru тоже на вью написан, но работает гораздо лучше. Такое ощущение что у хабра денег нет на нормальную разработку.

Любые проблемы с отрисовкой больших массивов данных правильно решать при помощи виртуализации.

Там за раз показывают штук 5 комментариев. Отобы прочитать 2500 нужно 500 раз их вручную подгружать. Не от хорошей жизни видимо.

Это только когда размеры точно определены

React + MobX на 10 голов выше чем просто React или react + что угодно другое. Поэтому Vue лучше чем голый реакт, да, но не лучше чем React + MobX

И чем же React + MobX лучше, чем Vue?

И чем же React + MobX лучше, чем Vue?

В основном JSX'ом (в том числе из-за возможности early return) и хуками

Что же мешает во Vue пользоваться JSX? https://vuejs.org/guide/extras/render-function#jsx-tsx

Преимущества React Hooks над Vue Composable API крайне сомнительны. Во Vue реализована настоящая модель реактивности, а хуки — эрзац-версия, в которой пересчёт костыльно прикручен к рендер-циклу.

 Во Vue реализована настоящая модель реактивности

Да, как и в MobX.
А хуки, это смотря как ими пользоваться и для чего.

Ну и что же они могут такого, что хуже реализуется во Vue?

Просто удобнее написание и всё. А сверхспособностей нет.

useEffect(() => {
  const interval = setInterval(state.fetchData, 5000);
  return () => clearInterval(interval); // When component unmount
}, []);

И чем же вьюшные onMounted() / onUnmounted() менее удобны? Они даже более наглядны в данном случае.

Просто тем, что это 2 метода, а внутри useEffect всё упаковано в одном, ну все переменные изолированы в одной области видимости.

Зависимости передавать ещё очень удобно, да. Вот во вью их некуда передавать, поэтому там не очень удобно. А тут запихнул их в массив и готово. Удобно!

Во вью для такого хитрого кейса есть watchEffect

watchEffect == autorun из MobX
watch == reaction из MobX

Вот поэтому вопрос что мешало разработчикам Реакта сразу сделать нормально?

Вот поэтому вопрос что мешало разработчикам Реакта сразу сделать нормально?

У меня такой же вопрос, но в целом наплевать ибо и так 10 лет MobX делает React прекрасным. Поэтому мне(да и всем кто юзает MobX) нет разницы какая версия реакта, 16, 17, 18, хоть 25. И так всё что нужно там есть давным давно. Как view свой react уже давно более чем полноценный, как инструмент для управления состоянием MobX давным давно более чем полноценный. Поэтому это сочетание делает реакт не просто реактом, а выводит его на совершенно другой уровень.

Я приемлимо знаю vue и не знаю react. Vue мне очень нравится, единственное что расстроило: когда захотел сделать приложение на андроид с использованием знакомых технологий обнаружил что для реакт есть реакт натив. А для vue чего то такого нет. Как более универсальное решение для транса веб в смартфон, я только капаситор нагуглил. Но немного провозившись с ним, попробовав прикрутить SQLite, я понял, что я не хочу использовать капаситор. Что то не растёт кокос. Я начинающий разработчик, и может я просто тупой, и капаситор норм фреймворк, не берусь делать заявление. Но я решил что то другое попробовать как руки дойдут.

Я пишу приложение под Android, используя https://v2.tauri.app/

Интерфейс у меня на Vue.js 3 + Pinia + Tailwind CSS v4 + Daisy UI v5. Очень удобно. У меня довольно много логики на Rust в приложении и немного нативного кода на Kotlin для USB. Но знать Rust не обязательно, можно очень многое сделать прямо из JS, используя плагины Tauri. Рекомендую посмотреть в эту сторону. В целом, у меня не просто мобильное приложение, а кросс-платформенное, Windows/Linux/Android. Адаптивная верстка позволяет один UI делать для всех платформ

а quasar для этого не рассматривали? там вроде из коробки интеграции с capacitor и cordova

Спасибо за статью!

ИМХО, вам удалось поймать оптимальное соотношение краткости и смысловой полноты.

В сети слишком много слишком поверхностных сравнений Vue и React, что делает их бесполезными, т.к. эти 2 продукта имеют много общего. А их основные различия не на столько просты чтобы из краткого обзора их можно было бы понять на уровне достаточном для принятия решений.

В 2022 году, я стал изучать фронтенд. Сначала база HTLM/CSS/JS, затем React. В 2023 я познакомлися с Node.js(Express), Next.js и SQL. А в конце 2024 начале 2025 я познакомился с Vue3. И вот что я хочу сказать:

Библиотека React с его JSX после HTML/CSS/JS - кажется очень приятным и удобным решением. Почти как Bootstrap после чистого CSS :) Next.js воспринимается как гениальное слияние React с Node.js. Правда я долго не понимал зачем там 2 роутера (Page-router и App-router) :))) А вот Vue3.... Это нечто удобное и интуитивно понятное с великолепной документацией! В нем есть всё что мне не хватало в React. Порядок и достаток, простота и доступность. И теперь мой выбор для разработки фронтенда однозначно Vue3. По поводу статьи, если кратко, то у меня сложилось мнение что она написана с целью размыть достоинства Vue3 и недостатки React... Видимо слишком много людей стало переходить с React на Vue3 :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации