Заявка на услуги DST
Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.
Библиотека React: особенности, перспективы, ситуация на рынке труда
В объявлениях о поиске программистов часто встречается требование уметь работать с React. Иногда работодатели ожидают знания React не только от фронтендеров, но и от бэкенд-разработчиков. Почему эта библиотека настолько популярная, стоит ли изучать её сегодня, каковы её перспективы по мнению опытных программистов? Ответы на эти и другие вопросы читайте в обзорной статье.
Что такое React: библиотека JavaScript для работы с пользовательскими интерфейсами
React — JavaScript-библиотека для работы с пользовательскими интерфейсами (UI), которую создали разработчики Facebook. Библиотеку начали использовать на сайте этой социальной сети в 2011 году. А в 2013 году Facebook открыл исходный код React.
С помощью React разработчики создают веб-приложения, которые изменяют отображение без перезагрузки страницы. Благодаря этому приложения быстро реагируют на действия пользователя, например, заполнение форм, применение фильтров, добавление товаров в корзину и так далее.
React применяют для отрисовки компонентов пользовательского интерфейса. Также библиотека может полностью управлять фронтендом. В этом случае React используют с библиотеками для управления состоянием и роутинга, например, Redux и React Router.
Ключевые особенности React: декларативность, универсальность, компонентный подход, виртуальный DOM, JSX
Одна из ключевых особенностей React — универсальность. Эту библиотеку можно использовать на сервере и на мобильных платформах с помощью React Native. Это принцип Learn Once, Write Anywhere или «Научитесь один раз, пишите где угодно».
Ещё одна важная особенность библиотеки — декларативность. С помощью React разработчик описывает, как компоненты интерфейса выглядят в разных состояниях. Декларативный подход сокращает код и делает его понятным.
React основан на компонентах, это ещё одна ключевая особенность библиотеки. Каждый компонент возвращает часть пользовательского интерфейса со своим состоянием. Объединяя компоненты, программист создаёт завершённый интерфейс веб-приложения.
Важная особенность React — использование JSX. Это расширение синтаксиса JavaScript, которое удобно использовать для описания интерфейса. JSX похож на HTML, тем не менее это всё-таки JavaScript.
JSX позволяет писать JavaScript-код с помощью готовых компонентов, которые практически полностью повторяют HTML. Это упрощает разработку.
К важным особенностям React относится использование виртуального DOM (Virtual DOM). Виртуальный DOM — объект, в котором хранится информация о состоянии интерфейса. При изменении состояния, например, после отправки формы или нажатия кнопки, React рассчитывает разницу между старым и новым состоянием. После этого библиотека отрисовывает новое состояние. Использование виртуального DOM позволяет библиотеке эффективно обновлять реальный DOM.
Чтобы подробнее узнать о работе с DOM и Virtual DOM, а также о принципах программирования пользовательских интерфейсов, посмотрите запись доклада Кирилла Мокевнина на конференции Fronthub 2015.
Промежуточный итог: React — популярная библиотека для работы с UI. К её основным особенностям относится декларативность, компонентный подход, универсальность, использование виртуального DOM и JSX.
Востребованность React: по данным исследований, библиотека входит в число самых популярных технологий
По информации сооснователя npm Inc Лорри Восса (Laurie Voss), доля React на рынке фронтенд-библиотек и фреймворков в конце 2018 года достигла 60 %. Данные о популярности библиотек и фреймворков получены в ходе опроса пользователей системы управления пакетами npm.
По данным исследования The State of JS 2019, в котором приняло участие более 20 000 разработчиков, React лидирует в категории «Фронтенд-фреймворки и библиотеки». 71 % респондентов сказали, что использовали эту библиотеку и будут использовать её в будущем. С 2016 года доля разработчиков, которые используют React и планируют использовать его в будущем, выросла с 48 до 71 %.
Другие популярные библиотеки и фреймворки уступают React. Например, только 40.5 % разработчиков сказали, что использовали Vue.js и планируют использовать его в будущем. Однако популярность Vue тоже растёт — с 2016 года она выросла с 8 до 40 %.
А вот популярность Angular падает. В 2019 году 35.8 % разработчиков сказали, что использовали этот фреймворк, но не будут пользоваться им в будущем.
В ежегодном исследовании предпочтений разработчиков (Developer Survey 2019) 74.5 % пользователей Stack Overflow назвали React самой любимой библиотекой. 21.6 % пользователей Stack Overflow назвали React самой востребованной библиотекой.
Промежуточный итог: React — лидер по популярности среди фронтенд-фреймворков и библиотек. Для студентов и начинающих программистов это особенно важная информация, так как её нужно учитывать при планировании обучения и карьеры. В следующем разделе пойдёт речь о востребованности React на рынке труда.
Ситуация на рынке труда: зарплаты и вакансии для React-разработчиков
На сайте поиска работы hh.ru по запросу React в начале июля 2020 года есть более 3000 вакансий по России. Эти вакансии можно объединить в три группы.
В первую группу входят объявления о поиске фронтенд-разработчиков. Типичные названия вакансий — «Frontend-разработчик», «JavaScript-developer». В таких объявлениях работодатели указывают умение писать на React в числе требований к кандидатам. Иногда вакансии называются «React-разработчик», но по сути работодатели ищут фронтенд-разработчиков, которые умеют писать на React.
В начале июля 2020 года в объявлениях о поиске JS-разработчиков со знанием React зарплатная вилка составляет от 50 000 до 285 000 рублей в месяц.
Вторая группа — объявления о поиске бэкенд- или фулстэк-разработчиков со знанием React. Например, один из работодателей искал fullstack или backend-разработчика на C#, который сможет решать задачи на фронтенде с помощью TypeScript, React и Redux. Ещё один пример — объявление о поиске Java-программиста, который работал с React или захочет разобраться в этой библиотеке.
То есть работодатели приветствуют знание React у кандидатов на вакансии, которые прямо не связаны с фронтенд-разработкой. Обычно в таких случаях компании ищут опытных программистов, поэтому предлагают зарплаты от 150 000 рублей в месяц.
Третья группа — объявления о поиске программистов со знанием React Native. С помощью таких объявлений работодатели ищут разработчиков мобильных приложений.
Вилка зарплат для разработчиков со знанием React Native составляет от 30 000 до 250 000 рублей в месяц. По состоянию на начало июля 2020 года открыто несколько оплачиваемых стажировок, минимальная зарплата стажёра составляет 15 000 рублей в месяц.
Промежуточный итог: умение работать с React — хорошее преимущество при поиске работы как для фронтендеров, так и для специалистов по бэкенду. А знание React Native позволит кандидатам претендовать на позиции разработчиков мобильных приложений.
По состоянию на конец июля 2020 года на hh.ru есть более 3000 вакансий для программистов со знанием React. Для сравнения, работодатели открыли только 1400 вакансий для программистов со знанием Vue.js и 1600 вакансий для программистов со знанием Angular.
Стоит ли учить React: мнение экспертов DST Global о развитии и перспективах библиотеки
Специально для этой статьи опытные разработчики поделились мыслями о перспективах React, целесообразности изучения этой библиотеки и инструментах для управления состоянием и альтернативных библиотеках и фреймворках. Эксперты ответили на такие вопросы:
По данным LogRocket, доля React на рынке UI-фреймворков и библиотек составляет около 60%. Как вы считаете, в обозримом будущем эта ситуация может существенно измениться?
Провокационный вопрос: фреймворк или библиотека, который обойдёт React в будущем, уже существует или он только должен появиться?
Какие новые возможности React лично вы ждёте больше всего? Когда они могут появиться?
Для управления состоянием в более или менее сложных React-приложениях чаще всего используется Redux. Появятся ли альтернативы Redux, которые станут популярными и общепринятыми способами управления состоянием?
Вопрос, ответ на который заинтересует новичков: стоит ли изучать React, чтобы устроиться на работу фронтенд-разработчиком в 2021 или 2022 году?
Заключение
Если вы все еще не можете выбрать фреймворк, то обратитесь к опытным разработчикам компании DST Global (dstglobal.ru), которые помогут с определением требований, планированием, разработкой и развертыванием проекта.
Специалисты веб-студии DST Global использует набор собственных технологий, основанных на 15-летнем опыте создания сложных проектов, в том числе и торговых сайтов с большой посещаемостью. В качестве фреймворка управления содержимым (Content Management Framework) веб-студия использует DST Platform. Система позволяет в короткие сроки и с значительной экономией бюджета создавать продукты высокого качества.
DST Global создает сайты под конкретные цели и задачи заказчика. Студия предоставляет гарантию на созданные ресурсы и обеспечивает техническую поддержку.
Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.
Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117
Задать вопрос по почте
О библиотеке или фреймворке, который обойдёт React в будущем
Да, я думаю, что такой инструмент уже есть, хоть и в очень зачаточном состоянии. При должном развитии, популяризации и организации обучения, этот новый инструмент заменит React в привычных сферах. Это решение построено на основе стейт-менеджера Effector. Автор Effector пришел к выводу, что управление состоянием неотделимо от отображения. Пока что рано рассказывать об этом решении на большую аудиторию. Но желающие смогут легко найти информацию об Effector в поиске.
О новых возможностях
Я жду, когда React научится батчить апдейты от сторонних событий. Например, от событий браузера, вроде клика по кнопке, двойной вызов хука setState или аналогичного, вызовет только один рендер. Но если двойной setState будет вызван по таймауту, то будет два рендера. Это не круто.
Помимо этого, хочется tree-shaking. Слишком уж много весит react-dom. Я не хочу «платить» за то, чего не использую.
О Redux и других инструментах управления состоянием
Redux изжил себя. Насчёт общепринятых или популярных — не знаю. Но я сам, а также в рабочих проектах с командой, полностью перешёл на управление состоянием с помощью Effector. Он поддерживает SSR, TypeScript, не привязан к фреймворку. Обеспечивает декларативные связи между сущностями, что помогает визуально отсматривать логику.
Я уже очень давно хотел отделить логику от вью. То есть ровно так, чтобы логика жила своей жизнью, независимо от вью. Компонент просто отправляет события в логику, а та сама решает, что делать с событиями, а вью лишь рендерится от стейта. Получаем React — та самая функция от состояния.
Effector позволяет мне реализовать это все без бойлерплейта, десятков различных методов, классов и декораторов. Лишь обычный JS/TS.
О целесообразности изучения
Да, стоит. Это самое популярное и гибкое решение на данный момент. Да, React далеко не простой, но изучив его, можно не бояться фронтенд-разработки. В отличие от фреймворков, React использует экосистему JavaScript, а не выдумывает полностью свою. Хоть и очень похож на фреймворк.
История успеха Svelte говорит о том, что в ближайшем будущем может появиться что-то новое, что заберет часть аудитории у React. Скорее всего, React еще долгое время будет если не на первом месте, то определенно в топе фреймворков.
Стоит отметить также, что существующие фреймворки различаются концептуально и используются для разных типов проектов. Поэтому популярность можно предсказывать, основываясь также на развитии технологий и подходов. На фоне развития мобильной разработки наличие React Native также играет в пользу фреймворка.
О библиотеке или фреймворке, который обойдёт React в будущем
Во фронтенде популярность и востребованность крайне переменчива. Возможно, какой-то из существующих фреймворков в будущем станет популярнее React, а спустя год выйдет новый, который обойдет обоих, но тоже ненадолго. При этом разница в популярности может быть минимальной.
Не стоит забывать о том, что за любым фреймворком стоит комьюнити, и пока оно растет и развивается, развиваться будет и фреймворк. А если кто-то из главных игроков прекратит поддержку, это может привести к плачевным результатам.
О новых возможностях
Честно говоря, мне пока хватает возможностей для разработки текущих проектов. Все же React изначально преподносился как библиотека, и основная ставка делалась на комьюнити, которое постоянно предлагает новые и интересные решения типовых задач. При этом и само ядро React также постоянно развивается с учетом требований разработчиков, что не может не радовать.
Учитывая эти факторы, уже завтра может появиться что-то новое, что позволит улучшить проект. Но, честно говоря, это даже пугает. Ведь мне тут же захочется отрефакторить код и использовать возможности, а на это требуется время, которого у фронтенд-разработчика обычно не хватает.
О Redux и других инструментах управления состоянием
Новые инструменты появятся. Я бы даже сказала, что уже сейчас они есть. С одной стороны, появление хуков заставило взглянуть на управление состоянием под другим углом. С другой стороны, клиентские реализации для GraphQL (например, Apollo) позволяют некоторым проектам обходиться без Redux. Также не стоит недооценивать MobX, который развивается и в будущем может предложить неплохую альтернативу.
О целесообразности изучения
Вот этот вопрос мне кажется более провокационным. Потому что нужно начинать изучение не с фреймворка, тем более, такого специфического, как React, а с чистого JavaScript. А потом уже можно попробовать разные фреймворки, чтобы понимать, как они устроены, и различать подходы к разработке проектов.
Как раз недавно на митапе MinskJS, который я помогаю организовывать, соорганизатор митапов MinskCSS и MinskJS Саша Шинкевич рассказывала доклад на тему «Как перестать выбирать фреймворки и начать жить». Мне кажется, это хорошая иллюстрация современного фронтенда. Выбирайте фреймворк не ради фреймворка, а для достижения хорошего результата.
О библиотеке или фреймворке, который обойдёт React в будущем
Мне кажется, это будет инструмент на базе React, но с большим количеством возможностей из коробки, то есть полноценный фреймворк: со встроенным стейт-менеджментом, роутингом, стандартизированным подходом к работе с формами, переводами и тому подобное.
О новых возможностях
Лично мне хочется дальнейшего развития create-react-app как инструмента для быстрого старта. Разработчики пошли по пути кастомных темплейтов вместо конфигурирования через cli при создании приложения. Это, конечно, уже лучше, чем создавать и поддерживать собственные бойлерплейты, но всё ещё недостаточно для того, чтобы считать CRA промышленным стандартом.
Кроме того, API хуков пока кажется неким промежуточным решением, поверх которого должна быть построена более удобная система работы с состоянием и методами жизненного цикла.
О Redux и других инструментах управления состоянием
Redux в чистом виде — это скорее концепция, чем инструмент для промышленной разработки. Сейчас, кажется, он вообще не используется в приложениях уровнем выше учебных.
За последние годы вокруг Redux возникла целая экосистема библиотек с мидлварами и хэлперами для удобной работы, а квинтэссенцией стала библиотека redux-toolkit. Из существующих альтернатив лично мне нравится библиотека mobx-state-tree, построенная поверх Mobx. И если для небольших приложений эта библиотека выглядит избыточной, то на проектах с большим количеством логики в тандеме с хуками она прекрасна.
О целесообразности изучения
Я думаю, что эта библиотека еще долгое время будет присутствовать в большинстве объявлений о поиске фронтенд-разработчиков, поэтому мой ответ — да, её стоит изучать. Но важно не забывать, что это всего лишь инструмент, а по-настоящему ценно знание фундаментальных вещей — операционных систем, сетей, структур данных, алгоритмов, концепций и парадигм.
О библиотеке или фреймворке, который обойдёт React в будущем
Пока, наверное, реальной альтернативы не существует. Я думаю, что если бы уже существовала такая библиотека или фреймворк, то она бы также быстро и много стала использоваться, как React.
О новых возможностях
Жду от React стабильности и совместимости.
О Redux и других инструментах управления состоянием
Ответила бы тут также, как и на второй вопрос. Очень много проектов написано с использованием связки React/Redux, поэтому пока Redux вне конкуренции.
О целесообразности изучения
Да, безусловно стоит, так как много компаний с современным стеком технологий используют React.
О библиотеке или фреймворке, который обойдёт React в будущем
Честно говоря, для меня это не является провокационным вопросом :-) Сами создатели React считают его библиотекой, и я склонен с ними согласиться. Да, React с легкостью можно назвать MV-фреймворком, который берет на себя довольно большую часть ответственности за архитектуру вашего приложения. Но степень этого охвата в то же время не такая всеобъемлющая, как у Angular, Vue, Ext — они в своей официальной документации дают вам полное видение того, как должна выглядеть ваша архитектура, и вполне обоснованно называют себя фреймворками. С другой стороны, вокруг React образовалась существенная экосистема, которая в большинстве случаев говорит вам, как нужно делать React-приложение. И вот если взять React + экосистема, то можно увидеть уже кучку фреймворков. Вы сами можете сделать еще один фреймворк на React, если вам это нужно.
О новых возможностях
Мне нравится их идея сделать в React 17 механизм, позволяющий из коробки рендерить некие заглушки в момент асинхронной загрузки данных.
О Redux и других инструментах управления состоянием
По-моему, этих конкурентов уже и так полно, вы не находите? Да, все они — некая вариация на тему Flux(читай MVC)-подобных архитектур c однонаправленным потоком данных, но их действительно много. Redux, MobX, Cerebral, xstate, и я думаю, это даже не половина всего, что есть в современной экосистеме. Да, Redux наиболее популярен, наверное, но совсем не значит, что он общепринят и безальтернативен на данный момент. Если же имеется в виду что-то принципиально новое, то я даже не знаю, скорее всего ничего лучше вариаций на тему MVC всё-равно не придумаешь, особенно если в качестве View у тебя «реакт головного мозга».
О целесообразности изучения
Однозначно стоит. Но нужно понимать, что самое важное — не знать все тонкости React, а понимать принципы, на которых он построен, что лежит в основе его архитектуры. Также не стоит забывать про базовые знания касательно JS и веба в целом. То есть если вы научились в хуки на React, но не понимаете, зачем в JS нужны прототипы, что такое замыкание, не представляете same origin policy и для чего оно нужно — это повод задуматься и изучить вопрос.
Поверьте мне, если вы научились писать HTML, CSS и AJAX-код для веб-разработки до появления фреймворков JavaScript и JS, вы поймете, почему мне это так нравится!
Тем не менее, React идеально подходит для создания пользовательских интерфейсов и пользуется популярностью за свою эффективность и гибкость при создании интерактивных и сложных веб-приложений.
Разработанный Facebook, React фокусируется на создании повторно используемых компонентов, управляющих состоянием, что приводит к более предсказуемому коду, который легче отлаживать.
У вас также есть возможность использовать TypeScript, если вам нужна дополнительная безопасность, и это то, что я обычно делаю при создании проектов React.
По сути, он использует виртуальный DOM для повышения производительности, обновляя только те части страницы, которые необходимо изменить, без обновления всего представления.
Это делает React идеальным решением для динамичных приложений с высоким уровнем взаимодействия с пользователем.
React также можно комбинировать с другими библиотеками, такими как Redux для управления состоянием, что делает его универсальным выбором для интерфейсной разработки.