vue или react что учить
Сравнение React и Vue на практическом примере
Автор материала, перевод которого мы публикуем сегодня, говорит, что на работе ему приходится использовать Vue и он хорошо изучил этот фреймворк. Однако, ему всегда было любопытно узнать, как обстоят дела в других мирах, а именно, во вселенной React.
Он почитал документацию, посмотрел несколько учебных видео, и, хотя всё это показалось ему весьма полезным, ему хотелось по-настоящему понять, в чём заключается разница между React и Vue. Для него поиск различий между фреймворками заключался не в выяснении того, поддерживают ли они виртуальную объектную модель документа, или того, как именно они рендерят страницы. Ему хотелось, чтобы кто-нибудь объяснил бы ему особенности кода, показал бы, что в нём происходит. Он надеялся найти статью, которая посвящена раскрытию именно таких различий, прочтя которую тот, кто знал раньше лишь Vue или React (или совершенно новый в веб-разработке человек), мог бы лучше понять различия между этими фреймворками.
Однако такой статьи ему найти не удалось. Этот факт привёл его к пониманию того, что ему самому надо взять и такую статью написать, попутно разобравшись в сходствах и отличиях React и Vue. Собственно говоря, перед вами описание его эксперимента по сравнению этих двух фреймворков.
Общие положения
Для проведения эксперимента я решил создать пару довольно стандартных To-Do-приложений, которые позволяют пользователю добавлять элементы в список дел и удалять их из него. Оба приложения разработаны с использованием стандартных CLI ( create-react-app для React и vue-cli для Vue). CLI — это, если кто не знает, сокращение, которое расшифровывается как Command Line Interface, то есть — интерфейс командной строки.
Теперь предлагаю взглянуть на внешний вид приложений, о которых идёт здесь речь.
Приложения, созданные средствами Vue и React
Вот репозитории с кодом этих приложений: Vue ToDo, React ToDo.
И там и там используется абсолютно одинаковый CSS-код, единственная разница заключается в том, где именно размещены соответствующие файлы. Учитывая это, давайте взглянем на структуру проектов.
Структура проектов, использующих Vue и React
В итоге и тот и другой подход позволяют достичь одной и той же цели, при этом, при желании, ничто не мешает организовать стили иначе, что в Vue, что в React. На самом деле, тут всё сводится к личным предпочтениям того, кто создаёт веб-проект. Например, тема структурирования CSS постоянно обсуждается в сообществах разработчиков. Сейчас мы просто будем следовать стандартным подходам к работе с CSS, заложенным в CLI рассматриваемых фреймворков.
Однако прежде чем мы пойдём дальше, давайте взглянем на то, как выглядит типичный компонент Vue и React.
Вот код компонента Vue (в нашем проекте он находится в файле ToDoItem.vue ).
Вот код React-компонента (файл ToDoItem.js ).
Теперь пришло время погрузиться в детали.
Как выполняется изменение данных?
Как видите, в обоих случаях мы описываем одни и те же данные, они просто по-разному оформлены. В результате можно сказать, что передача изначальных данных компонентам в Vue и React выглядит очень и очень похоже. Но, как уже было сказано, подходы к изменению существующих данных в этих фреймворках различаются.
Теперь, когда с изменениями данных мы разобрались, поговорим о том, как, в обеих версиях нашего приложения, добавлять новые элементы в список дел.
Добавление новых элементов в список дел
▍React
Вот как это делается в React.
Для добавления нового элемента в список дел в Vue используется следующая конструкция.
Удаление элементов из списка
▍React
В React эта операция выполняется так.
Удаление элемента списка в Vue выполняется так.
В Vue требуется несколько иной подход к удалению элементов, чем тот, которым мы пользовались в React. А именно, тут надо выполнить три действия.
Во-первых, вот что надо сделать в элементе, для которого нужно будет вызвать функцию его удаления.
Затем нужно создать функцию emit в виде метода в дочернем компоненте (в данном случае — в ToDoItem.vue ), которая выглядит следующим образом.
Это уменьшило бы число шагов, необходимых для удаления элемента списка, с трёх до двух. Как именно поступить — вопрос предпочтений разработчика.
Работа с прослушивателями событий
▍React
В React прослушиватели событий для чего-то простого, вроде события щелчка, весьма просты. Вот пример создания обработчика события click для кнопки, создающей новый элемент списка дел.
Тут всё устроено весьма просто, это очень похоже на обработку подобных событий с использованием чистого JavaScript.
Например, для добавления прослушивателя события щелчка можно использовать следующий код.
Существует и множество сокращений, упрощающих написание прослушивателей, реагирующих на нажатия клавиш на клавиатуре. В React, как мы уже говорили, это занимает больше времени, чем в Vue. Здесь же это делается очень просто.
Передача данных дочерним компонентам
▍React
В React свойства передаются дочернему компоненту при его создании. Например, так:
В Vue свойства дочерним компонентам также передаются при их создании.
Передача данных родительскому компоненту
▍React
При использовании Vue, в дочернем компоненте достаточно написать функцию, которая передаёт данные родительской функции. В родительском компоненте пишется функция, которая прослушивает события передачи значения. При возникновении подобного события такая функция вызывается. Как и в случае с React, описание этого процесса можно найти в разделе об удалении элементов из списка.
Итоги
Мы поговорили о том, как добавлять, удалять и изменять данные в приложениях, основанных на Vue и React, о том, как передавать данные, в виде свойств, от родительских компонентов дочерним, и как отправлять данные от дочерних компонентов родительским. Полагаем, что после анализа примеров сходства и различия Vue и React видны, что называется, невооружённым глазом.
Существует, конечно, множество других небольших различий между React и Vue, но хочется надеяться, что то, что мы рассмотрели здесь, послужит хорошей основой для понимания того, как работают эти фреймворки. Фреймворки часто анализируют при выборе подходящей платформы для нового проекта. Надеемся, этот материал поможет такой выбор сделать.
Уважаемые читатели! Какие различия между React и Vue, на ваш взгляд, являются самыми главными, влияющими на выбор того или иного фреймворка, например, в качестве основы для некоего проекта?
Что лучше всего изучать в 2020 году: Angular, React, или Vue.js
В начале любого веб-проекта, выбор фреймворков и библиотек является невероятно важным фактором.
JavaScript является ядром для большинства веб-приложений, и имеет в своей экосистеме большое количество разнообразных инструментов для решения веб-задач. Во многом, из-за доступности большого арсенала инструментов, многие разработчики затрудняются ответить для себя, какой фронтэнд-фреймворк JavaScript лучше всего подходит для их следующего большого проекта. Если вы всё ещё следите за дебатами о том, является ли React, Vue, или Angular лучшим выбором, то пришло время узнать статистику, и как обстоят дела в 2020 году.
В этой статье мы нашли наиболее релевантные ответы на самые распространённые вопросы JavaScript разработчиков:
Согласно статистике JavaScript в 2019 году, мы считаем React одним из предпочтительных выборов из JavaScript фреймворков, и заодно получили обратную связь от разработчиков в их личных предпочтениях.
По сравнению с предыдущим опросом, Vue на удивление удалось занять вторую позицию, обогнав Angular, который занимал третью позицию.
Давайте погрузимся в тренды и детально сравним эти три ведущих фреймворка Javascript-программирования, чтобы сделать оптимальный выбор фреймворка.
1. Обзор исторического бэкграунда React, Angular и Vue.
Чтобы принять обоснованное решение для вашего следующего веб-проекта, мы сравним возможности этих трех топовых фреймворков. Но перед этим вам нужно покопаться в глубине фреймворка и узнать историю их появления.
Обзор
Разработанный Facebook, React является популярным фреймворком, используемым для создания и управления динамическим пользовательским интерфейсом веб-страниц. С другой стороны, Angular является наиболее мощным, эффективным и открытым фреймворком от Google Javascript, который используется для создания SPA (Single Page Application). Тем не менее, Evan You создал Vue при поддержке огромного числа разработчиков, участвующих в разработке экосистемы фреймворка. Не будет ошибкой сказать, что Vue имеет все этические аспекты React и Angular. И по этой причине Vue завоевала широкую популярность за очень короткое время, и на протяжении всего времени не теряет свои позиции.
История React, Angular и Vue.
React
Facebook впервые запустил React в 2010 году в виде синтаксиса форм, с открытым исходным кодом. Однако, когда рекламой Facebook стало трудно управлять с помощью простого HTML-кода, они начали искать подходящее решение, и Джордан Уолк (Jordan Walke) разработал его прототип фреймворка и придумал React в 2012 году.
В 2013 году React был не только с открытым исходным кодом, но и был тепло воспринят примерно 3 миллионами фронт-энд-разработчиков. После этого проблемы с программированием постепенно разрешились, и в 2014 году компания React завоевала прочную репутацию. Facebook и Instagram являются крупными компаниями, использующими этот фреймворк.
Angular
Сегодня Angular опустил суффикс JS после последнего релиза Angular 2+ 28 мая 2019 года. На сегодняшний день Google и Wix являются двумя самыми популярными компаниями, использующими Angular.
В марте 2019 года Vue вышла с версией 2.6.10, чтобы практически устранить все недостатки других фреймворков и предложить вам гибкость в создании веб-приложений следующего уровня без лишних хлопот.
На сегодняшний день GitLab и Alibaba являются наиболее авторитетными пользователями Vue.
2. Angular vs React vs Vue: Популярность в 2020 году
Здесь мы будем учитывать тренды NPM, тренды Stack Overflow и GitHub активность для определения рыночной позиции каждого из фреймворков.
В соответствии с трендами NPM, React является наиболее скачиваемым фреймворком. Однако это не означает, что он является самым лучшим. Чтобы сделать вывод о том, какой вариант является лучшим, необходимо провести множество опросов и голосований.
б) Тренды Stack Overflow: React находится в топе по трендам, обгоняя Angular.
При сравнении Angular vs React с популярностью Vue в 2020 году, Stack Overflow Trends показывает, что React получает наибольший процент, за которым следует Angular. Но популярность Vue постоянно растет по сравнению с последними несколькими годами.
В репозиториях Github есть несколько удивительных, но захватывающих статистик. С одной стороны, у React больше всего Fork-ов, а у Vue больше всего звёзд.
3. Angular vs React vs Vue: Производительность
Обзор
Производительность является одним из наиболее важных аспектов, которые должны быть рассмотрены для фронтенд-приложения. И когда дело доходит до оценки производительности Angular, React и Vue, имейте в виду, что DOM рассматривается как пользовательский интерфейс любого приложения. Как в React, так и в Angular применяются разные подходы к обновлению HTML-файлов, а Vue позаимствовал лучшее из этих двух фреймворков. Давайте углубимся в сравнение Angular vs React vs Vue.
Angular
Во-вторых, Angular использует двусторонний процесс связывания данных, который воспроизводит все изменения, при обновлении Модели, в представления безопасным, эффективным и интуитивно понятным способом.
Недостаток: Из-за большого количества функций этого фреймворка, при переводе вашего проекта в тяжелые приложения, он снизит производительность по сравнению с React и Vue.
React
React основана на одностороннем управлении данными. Это обеспечивает лучший контроль над всем проектом.
Недостатки: Поскольку React постоянно меняется, разработчикам, работающим с React, необходимо регулярно обновлять свои навыки, чтобы безупречно идти в ногу со временем.
Недостатки: Будучи новым членом семьи, Vue имеет самое маленькое сообщество, по сравнению с React и Angular.
Замечание: По сравнению с другими фреймворками Javascript, Angular, React и Vue являются тремя самыми быстрыми фреймворками для построения веб-приложений.
4. Angular vs React vs Vue: Миграция
Обзор
Иногда переход с одной версии на другую может стать проблемой для разработчиков. Если сравнить процесс миграции Angular vs React vs Vue в 2020 году, то вы удивитесь, узнав, что у Vue самый простой и быстрый способ обновления. Давайте поймём, насколько они сложны и трудоёмки.
Angular
Angular обычно выпускает мажорные обновления каждые шесть месяцев. Кроме того, существует период ещё в шесть месяцев до того, как основное API будут считаться устаревшим. В конечном итоге это означает, что разработчики имеют два цикла выпуска обновлений по шесть месяцев для внесения необходимых изменений.
React
Vue имеет самые умные и разнообразные варианты миграции для разработчиков. Если вы нанимаете веб-разработчиков, то им просто нужно использовать инструмент хелпера по миграции для внесения изменений на сайте, так как 90% API остаются неизменными, если вы решите перейти с 1.x на 2.
5. Angular vs React vs Vue: Кривая обучения
Итак, в каких рамках происходит кривая обучения? Согласно приведенному ниже графику, очевидно, что самый большой сегмент разработчиков «слышал и хотел бы учиться» Vue, в то время как React является наиболее желательным выбором разработчиков, а Angular имеет уменьшающийся процент популярности.
Кривая обучения любого фреймворка не ограничивается только программированием. На самом деле, то, насколько легко отлаживать и тестировать код, также является реальной проблемой, особенно когда компания, разрабатывающая веб-приложения, работает с огромным проектом с большим количеством кода и разработчиков в приложении.
С одной стороны, Angular and React требует глубоких знаний и опыта работы с JavaScript для принятия решений относительно сторонних библиотек. С другой стороны, многие компании быстро переходят на Vue, так как он имеет самую простую кривую обучения по сравнению с Angular и React.
Тем не менее, большая часть разработчиков предпочитает React, поскольку это позволяет создавать приложения новейшими современными способами, в отличие от Vue, который все еще следует старинному стилю разработки веб-приложений на JavaScript.
Несмотря на то, что популярность Angular падает, он находится в тройке лучших JS-фреймворков, так как предоставляет разработчикам чёткие, информативные сообщения для быстрого исправления проблем в разработке приложений, при возникновении ошибок.
6. Angular vs React vs Vue: Размер
Учитывая указанные ниже размеры каждого фреймворка и библиотеки, Vue и React подходят для легких приложений, в то время как Angular хорошо подходит для сложных и тяжелых приложений.
Angular (приблизительно 500 КБ размера)
React (размер приблизительно 100 КБ)
Vue (размер около 80 Кб)
Давайте узнаем, как эти размеры могут повлиять на проекты по разработке программного обеспечения вашего бизнеса.
Angular
React
7. Angular vs React vs Vue: Скорость деплоя
Скорость настройки зависит исключительно от количества библиотек, доступных разработчику. Поэтому также делается вывод, что разработка веб-приложения быстрее и проще в Angular чем в React, из-за большого количества настроенных инструментов из коробки. В то время, как архитектура React более проста в масштабировании, чем в Angular.
Angular
React
По сравнению с Angular и React, структура программирования на Vue позволяет быстро развернуть приложение без ущерба для его производительности. С помощью простой команды вы можете использовать именно то, что вам нужно для разработки. Разработка приложения происходит быстро и легко с помощью Vue, поэтому это идеальный вариант для стартапов.
8. Angular vs React vs Vue: поддержка сообщества, экосистема
В настоящее время мы знакомы с историей этих трёх ведущих JS-фреймворков, и Angular с React имеют значительную общественную поддержку со стороны таких крупных компаний, как Google и Facebook, в то время как Vue всё ещё находится в open-source сообществе. Так как React был самым популярным на протяжении многих лет, он заручился большой поддержкой разработчиков, и большинство ваших проблем можно легко решить с помощью StackOverflow.
Angular
React
Он был представлен Facebook в 2013 году как JavaScript-библиотека, которая предоставляет вам богатый функционал фреймворка. Основными компаниями, которые используют React, являются Instagram, Netflix, New York Times, Yahoo, Whatsapp, Microsoft, Airbnb, Dropbox и так далее.
Он может быть и является новым фреймворком и не имел такого активного комьюнити, как Angular и React, но всё же, он используется ведущими компаниями, включая EuroNews, Alibaba, WizzAir, Xiaomi, Gitlab, Grammarly и многие другие.
9. Angular vs React vs Vue: Советы по выбору
Выберите Angular, если вам необходимо:
Выберите React, если вам необходимо:
Выберите Vue, если вам необходимо:
Можете так же изучить таблицу, которая поможет вам в принятии решения (на английском).
Сравнения основаны на фактах, опросах и тематических исследованиях ведущих организаций. Тем не менее, мы предлагаем вам провести самостоятельное исследование, прежде чем принимать какое-либо решение, когда вы собираетесь работать над бизнес-проектом.
В этой статье мы рассмотрели JS фреймворки, рекомендуемый для изучения в 2020 году. Уверен, что после прочтения этой статьи у вас больше не будет вопросов, какой js фреймворк выбрать 2020, теперь вы знаете, как сделать этот выбор. Эта статья была максимально объективной, которая основывалась на рейтинге JavaScript фреймворков по нескольким факторам, и сравнении Vue, React и Angular.
Subscribe to Блог php программиста: статьи по PHP, JavaScript, MySql
Get the latest posts delivered right to your inbox
Что лучше выбрать в 2020 году — React или Vue?
JavaScript-фреймворки стали неотъемлемой частью каждого современного веб-проекта. Существует множество подобных фреймворков, в результате разработчикам постоянно приходится задаваться вопросом о том, что выбрать. Искать ответ на этот вопрос придётся и в 2020 году.
Если вы это читаете — можно предположить, что вы заняты поиском фреймворка, который станет основой вашего следующего приложения. Вполне возможно, что вы ориентируетесь на ведущие технологии и размышляете о том, что вам лучше подойдёт — библиотека React или фреймворк Vue. Это — непростая дилемма, но решать её, всё равно, нужно. Вот некоторые распространённые вопросы, которыми задаются те, кто выбирает между React и Vue:
Популярность
В мире JavaScript новые фреймворки и библиотеки появляются чуть ли не каждый день. На самом деле, это практически непрерывный процесс, в ходе которого фавориты меняются буквально каждые несколько месяцев.
Взглянем на данные 2019 года и выясним — что популярнее — React или Vue.
Вот Сведения из Google Trends. Здесь представлено несколько графиков, иллюстрирующих популярность React, Vue и Angular. Несложно заметить, что React значительно опережает Vue.
Популярность React, Vue и Angular
Теперь обратимся к результатам исследования Stack Overflow. React возглавляет рейтинг фреймворков, которые сильнее всего нравятся разработчикам. А Vue лишь немного от него отстаёт. Vue, с момента выхода в 2014 году, за довольно короткое время приобрёл немалую популярность.
Результаты исследования Stack Overflow
История
Этот JS-фреймворк создал в 2014 году Эван Ю, бывший сотрудник Google. За спиной Vue нет компаний-технических гигантов. Самый свежий релиз Vue (2.6.10) вышел 20 марта 2019 года.
С момента появления Vue прошло всего 5 лет. Это делает данный фреймворк самой молодой разработкой среди систем подобного уровня. Среди крупных компаний, использующих Vue, можно отметить Alibaba и GitLab. Одной из особенностей Vue является тот факт, что в нём прослеживается смешение возможностей некоторых других успешных JS-фреймворков.
▍React
React — это JavaScript-библиотека, которую создал не самостоятельный программист, а огромная компания. Речь идёт о Facebook. Одной из основных причин создания React было желание компании улучшить механизмы формирования интерфейсов. Эту библиотеку разработали тогда, когда в Facebook столкнулись с некоторыми проблемами, касающимися разработки и поддержки проекта.
Библиотека React известна как мощное средство для создания динамических и интерактивных пользовательских интерфейсов. 6 мая 2019 года вышла самая свежая версия React (16.8.6). Эта библиотека используется для разработки интерфейсов во многих известных компаниях. Среди них — BBC, Instagram, WhatsApp.
Производительность
Изменения в интерфейсе приложений выполняются путём модификации объектной модели документа (DOM). Существуют такие понятия, как виртуальная DOM и реальная DOM. От того, как именно организован процесс работы с DOM, серьёзно зависит производительность JavaScript-инструментов для разработки интерфейсов.
Виртуальная DOM и реальная DOM
▍React
В React используется виртуальная DOM — это легковесная система, не зависящая от браузера. Одной из основных причин популярности React является то, что эта библиотека весьма эффективно работает с DOM.
В Vue тоже используется виртуальная DOM, но, в сравнении с React, Vue отличается более высокой производительностью и стабильностью.
Поддержка сообществ
Сообщества, которые складываются вокруг технологий, серьёзно влияют на их развитие и распространение. В частности, члены сообществ способны оказать помощь основным разработчикам технологий, они создают различные дополнения, они помогают новичкам.
▍React
Поддержкой и развитием самой библиотеки React занимается Facebook. Это даёт тому, кто выбирает данную библиотеку в качестве основы фронтенда своего приложения, довольно высокий уровень уверенности в том, что React в ближайшем будущем не превратится в некий заброшенный всеми проект. Сообщество React-разработчиков создало и поддерживает множество дополнительных инструментов.
Vue — это проект, у истоков которого стоит обычный человек, а не крупная корпорация. Как результат — в первое время после появления этот фреймворк выглядел в глазах разработчиков не особенно надёжным. Однако по прошествии некоторого времени Vue стал чрезвычайно популярным, в его развитие вносит вклад множество программистов. Фактически, можно говорить о том, что именно сообщество Vue-разработчиков — это та сила, которая поддерживает проект.
Размер
Если рассматривать вопрос размера очень упрощённо, то можно сказать, что React немного больше, чем Vue. Размер React — это около 100 Кб, размер Vue — около 80 Кб. Размер JS-кода — это очень важный показатель, который оказывает сильное влияние на производительность веб-проектов. Чем он меньше, тем, естественно, лучше.
Однако тут надо отметить, что React, для реализации определённых возможностей, нуждается в сторонних библиотеках. Одна из таких возможностей — маршрутизация. Vue же — это проект, обладающий более обширным набором стандартных возможностей, хотя и при работе с Vue без дополнений тоже не обойтись. И React и Vue, всё же, обладают достаточно скромными размерами, что делает их вполне подходящими для разработки небольших приложений.
Примеры использования
Прежде чем выбирать технологию для очередного проекта, программисты и управленцы обычно интересуются тем, в каких существующих проектах эта технология уже применяется. Если говорить о том, на чём основаны React и Vue, о JavaScript и других веб-технологиях, то можно сказать, что всё это применяется в бесчисленном количестве компаний. Если же взглянуть на конкретные примеры применения React и Vue, то можно выделить, например, следующие компании.
▍React
Кривая обучаемости
Кривая обучаемости — это графическое представление изменения скорости обучения определённому знанию или виду деятельности. В нашем случае речь идёт о скорости освоения React и Vue. Известно, что Vue освоить легче, чем React.
При проведении исследования StateOfJS респондентам предлагали ответить на различные вопросы о фреймворках. Ниже показаны результаты опроса по React, Vue и Angular.
Результаты опроса по React, Vue и Angular
Вот какой смысл вкладывается в цветовое выделение фрагментов диаграмм.
Цветовая кодировка вариантов ответов на вопросы. Сверху вниз: «Никогда не слышал об этом», «Слышал, но это мне неинтересно», «Слышал, хотел бы изучить», «Пользовался, снова пользоваться не буду», «Пользовался, буду пользоваться снова».
Как видно, многие пользовались React планируют снова пользоваться этой библиотекой. Немало программистов заинтересованы в изучении React. Если же говорить о Vue, то можно отметить, что показатель использования этого фреймворка не так велик, как у React, а показатель, указывающий на заинтересованность в изучении, превышает таковой у React. Это позволяет говорить о том, что Vue — это фреймворк, который очень многие хотят попробовать. В результате, учитывая то, что Vue легче в освоении, можно ожидать, что в будущем возрастёт число тех, кто использовал Vue и планирует использовать снова.
Гибкость
▍React
Ядро React предоставляет лишь базовый функционал. При практическом использовании этой библиотеки её возможности приходится расширять. Это даёт разработчику огромный уровень гибкости в плане выбора дополнительных инструментов. Существуют средства для разработки интерфейсов, идеи, заложенные в которые, можно счесть прямо противоположными тем, которые заложены в React. Например — это Angular — фреймворк, в состав которого включено множество стандартных средств. Плюс этого — готовый набор инструментов, которые хорошо друг с другом сочетаются. Минус — отсутствие того уровня гибкости в выборе средств, который даёт React.
Если говорить о конкретных задачах, решаемых с помощью дополнительных библиотек, используемых с React, то тут можно отметить, например, маршрутизацию, управление состоянием приложений, серверный рендеринг, разработку приложений для мобильных устройств.
Vue, в отличие от React, даёт разработчику более обширный набор стандартных инструментов, позволяющих решать те же задачи, которые в экосистеме React обычно решают с использованием сторонних библиотек.
▍Итоги
Если собрать воедино всё то, о чём мы только что говорили, то можно сделать следующие выводы:
Уважаемые читатели! Если вы недавно занимались подбором фреймворка для своего очередного веб-проекта — просим рассказать о том, что и почему вы выбрали.