Нещодавно брав участь в івенті “спочатку був код” №4. Разом з колегами “по цеху” обговорили тему вибору front-end фреймворку в 2023 між найпопулярнішими кандидатами — Vue і React. Хоча загалом я проти трайбалізму навколо фреймворків і вважаю що всьому веб-комʼюніті варто кооперуватись і рухатись в одну сторону, та в колах починаючих front-end розробників питання вибору першого фреймворку все одно актуальне.
Нижче я викладу особисті роздуми з цієї теми і цікаві тези які я виніс з обговорення.
DISCLAIMER! В роботі я використовую виключно React, тому всі тейки про Vue можуть піддаватись критиці чи сумнівам. Я не позиціоную свою думку як істину. В першу чергу мені цікава здорова дискусія. Якщо ви уже вибрали свій улюблений фреймворк і задоволені їм, то цей пост навряд буде цінним для вас.
Що я виніс з обговорення
Відповідь на питання “який фреймворк обрати” скоріше має дискусійну цінність, бо насамперед вибір залежить від цілей яких ви хочете досягти. Не дарма front-end комʼюніті досі не має однозначного фаворита
Якщо ви добре знаєте основи (HTML/CSS/JS), то вибір фреймворку може не бути ключовим. В такому випадку опанування нового фреймворку в хорошій команді з ментором може проходити досить легко. І перші задачі з фреймворком ви легко зможете почати робити вже через лічені тижні.
React частіше за Vue зустрічається на ринку праці і не схоже що в найближчий час варто очікувати якихось змін. Останнім часом зʼявляється багато конкурентів що пропонують краще вирішення тих чи інших проблем — Svelte, Solid, Qwik. Але того самого фаворита, що зміг би сильно сколихнути позиції React поки складно назвати
Vue — це повноцінний фрейморк і надає інструменти для покриття всіх задач, що стоять перед типовим застосунком. Це позбавить вас від зайвого клопоту у виборі хороших супутніх бібліотек і необхідності все це самостійно суміщати. React же — вузьконаправлена бібліотека для ренедру UI. Без використання додаткових бібліотек з екосистеми хоч і можна обійтись, але навряд це буде хорошим рішенням.
Через те що React застосовує функціональні підходи і патерни для рендеру UI він вимагає розуміння і дотримання правил щодо чистоти функцій, сайд-ефектів, однонаправленого потоку даних тощо. Ці правила можуть бути нетривіальними для вивчення, але вони точно є обовʼязковими для написання хорошого коду. Vue в свою чергу не має таких складних концепцій, тому його може бути простіше вивчити загалом
Так як з коробки React не покриває всіх потреб (окрім механізму рендеру UI), то його краще використовувати в складі інших фреймворків, які називають “мета фреймворками”. Вони покривають дуже широкий спектр задач. З однієї сторони є astro.build що дозволяє швидко запускати статичні сайти як блоги чи документація. З іншої сторони є nextjs.org та remix.run що дозволяють розробляти дуже динамічні full-stack застосунки.
У Vue краще документація, по ній можна вивчити все необхідне. Докуменрація React, хоч і покриває всю функціональність, могла б бути сильно кращою і повнішою. Але натомість на тему React існує дуже багато матеріалів від комʼюніті, що можуть швидко допомогти вирішити будь яку проблему.
Стагнація React може лякати, особливо враховуючи кількість невирішених питань від комʼюніті. Core team в свою чергу дуже довго працює над фічами, цінність яких не всім зрозуміла. Але напевно саме такі кардинальні зміни в підходах до розуміння і розробки web-застосунків як progressive hydration, server components можуть надати нового поштовху в популярності. Попередній такий зсув із появою hooks я вважаю одночасно найкращим і найгіршим рішенням в історії React. Але від цього не менш історичним.
Нові фреймворки не пропонують революційних рішень, а пропонують поступове покращення вже наявних і розповсюджених концепцій — компонентний підхід, virtual DOM, server-side rendering, ui = f(state). Фреймворки епохи React приходили на заміну JQuery і були тектонічним зсувом у front-end розробці спровокований бурхливим ростом очікувань зі сторони бізнесу від web-застосунків. Чи очікує нас схожа революція найближчим часом?
Тим не менш завжди варто бути готовим до швидких змін і до необхідності постійно тримати руку на пульсі. Навіть якщо фреймворки не змінюються, то точно змінюються підходи до розробки із використанням тих самих фреймворків. React декілька років назад і React сьогодні — це зовсім різні речі.
State of React vs Vue
Буду радий, якщо поділитесь власними думками чи спостереженнями на цю тему 👋