Программирование  •  18 марта 2022  •  5 мин чтения

Базово о React: что это такое и как помогает разработчику

40% разработчиков сайтов используют в работе React — это данные исследовательского отдела Statista. А мы в этой статье разберёмся, что такое React, какие задачи решает и за счёт чего популярен.

Зачем нужен React: помогает создавать интерфейсы

React — это JavaScript-библиотека для создания пользовательских интерфейсов — такое определение дают авторы технологии. Разберём по частям.

JavaScript (JS) — это единственный язык программирования для описания поведения элементов на странице в браузере: он делает интерфейсы интерактивными. Простой пример работы JS — реакция на действия пользователя:

  • клик мышкой открывает всплывающее окно — это JavaScript;
  • по нажатию на кнопку «Опубликовать» пост появляется в инстаграме* без обновления страницы — это JavaScript.

Например, в гугл-документах работа JavaScript выглядит так:

Комментарий в гугл-документе появляется без обновления страницы — это возможно благодаря JavaScript

Комментарий в гугл-документе появляется без обновления страницы — это возможно благодаря JavaScript

Библиотека — это код, который написали другие разработчики. Хоть React нередко называют фреймворком, это не совсем верно: код из библиотеки разработчик использует в своей программе, а код из фреймворка использует код разработчика в себе. Приведём аналогию:

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

Фреймворк ограничивает разработчика в выборе инструментов, но гарантирует, что решит типовые задачи однозначным способом по стандартам качества. Библиотека же не определяет, какие технологии использовать, что создавать и как, — это упрощает обучение и даёт больше гибкости, но возлагает на разработчика ответственность за код и выбранные инструменты.

Пользовательские интерфейсы — то, что видит пользователь на сайте, в мобильном приложении, VR-очках, чат-боте, на экране умных часов и так далее.

С определением разобрались, теперь о том, для чего нужен React.js и как его использовать.

Материал по теме:
Куда развиваться JS‑программисту: профессия React‑разработчика

Как работает React: описываем, что хотим получить

Чтобы понять, как работает React и в чём его фишка, понадобится разобраться с двумя подходами к программированию: императивным и декларативным. Сделаем это на примере такси.

  • Если пассажир говорит таксисту: поверни руль вправо, а теперь — влево, нажми на педаль газа, на тормоз, то это императивный подход. Пассажир описывает каждое действие таксиста, чтобы получить результат (доехать до дома).
  • Если же пассажир говорит адрес, а таксист строит маршрут, следит за передачами и поворотами, это декларативный подход. Пассажир описывает конечный результат (точку, в которую нужно прибыть) и реакцию на внешние события вроде «если встанем в пробку на час, высади меня у метро».

React.js работает на идее декларативного подхода. Это называется «UI — функция данных» — разработчик описывает, как ведёт себя интерфейс в зависимости от данных и событий, например:

  • для каждого пользователя в чате нарисуй кнопку-крестик в списке с аватарками;
  • если пользователь нажал на крестик, убери из списка пользователей того, рядом с чьей аватаркой этот крестик.

С React разработчику не придётся описывать подробности. Давайте сравним решение с библиотекой и без при такой задаче: удалить пользователя из списка чата, если другой пользователь нажал на крестик рядом с ним.

Без библиотеки

Указать, что при удалении пользователя из списка нужно убрать текст рядом с его именем, кнопку рядом с аватаркой, аватарку и данные ещё в 20 местах, где есть информация об удалённом пользователе.

С React

Передать список из двух, а не трёх пользователей.

И React перерисует все элементы на странице.

Описания блоков UI в React.js становятся компонентами, из которых собирается интерфейс. Компоненты — это формы, кнопки, поля и экраны приложения. Разработчик создаёт их сам или берёт из сторонних библиотек. А ещё он может вкладывать компоненты друг в друга, переиспользовать или редактировать разом:

  • разработчик описывает компонент с помощью React;
  • указывает все места, где этот компонент отображается;
  • React добавляет компоненты в HTML;
  • если разработчику нужно модифицировать компонент, например поменять цвет кнопки, он указывает новый цвет для нужного компонента;
  • React меняет цвет всех кнопок, во всех местах, где отображается этот компонент. При этом никто не запрещает сделать цвет кнопки настраиваемым и для каждого конкретного компонента.

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

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

Популярность React: 15 млн установок в день

React 11 лет назад разработала Facebook*. Но сейчас React — это проект с открытым кодом, в который каждый разработчик может предлагать изменения. И популярен он не только у команды Цукерберга:

Сколько раз React устанавливали за пять лет, не возьмёмся считать:

Количество установок разных библиотек за пять лет. React — оранжевая линия.
Количество установок разных библиотек за пять лет. React — оранжевая линия. Данные сайта npmtrends.com
Разработчики используют React для разных интерфейсов, например:

  • во многих пользовательских и внутренних сервисах Яндекса;
  • для ленты сайтов и приложений Facebook* и Instagram*;
  • в онлайн-кинотеатре Кинопоиска; на Пикабу;
  • в мессенджере WhatsApp; и множестве других интерфейсов, подробный список есть на GitHub.

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

Чем же хорош React: универсальность, гибкость и отличный DevX

У React четыре преимущества перед аналогичными библиотеками для разработки интерфейсов.

Универсальность. React — это JavaScript-библиотека, а JavaScript — популярный язык программирования, который используется всюду. Ни одна другая JS-библиотека не работает в таком количестве окружений и на таком количестве устройств.

Гибкость. React гибкий, потому что позволяет:

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

Отличный DevX. UX — это пользовательский опыт, а DevX — опыт разработчика — то, насколько удобно, комфортно и просто разработчику взаимодействовать с технологией. И у React отличный DevX.

React существует 11 лет и за это время:

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

Всё это делает React удобным для разработчика. А ещё у библиотеки много пользователей — это значит, что есть у кого перенять опыт и попросить совета.

Читаемость. В React приложение разбито на компоненты, поэтому в 9 случаях из 10 при поломке видно, в какой части кода беда:

  • разработчик видит, что сломалась кнопка;
  • идёт в компонент «кнопка» и устраняет проблему для всех кнопок разом.

Если же что-то ломается в JavaScript, то разработчик сначала идёт плакать. Потому что проблема может быть и на стороне HTML, и на стороне JS, и на стыке этих технологий, когда случается «рассинхрон» данных и отображения. Часто нет понятного разделения на файлы, приходится копаться. И главное — починка одной кнопки не исправит автоматически остальные.

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

Изучение React стоит начинать с HTML и JavaScript

Сначала изучают базу — HTML, CSS и JavaScript, а уже потом переходят к React. Учить в другой последовательности нелогично, примерно как изучать технический английский без языковой базы — мучительно и тормозит развитие.

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

Ускорить прогресс при изучении React.js помогает обратная связь, ревью кода. Благодаря ревью код становится рабочим, читаемым и соответствует стандартам отрасли. Поэтому изучать React лучше с наставником или в рамках учебной группы.

* сервис предоставляется организацией, признанной экстремистской на территории РФ

Статью подготовили:

Георгий Перепечко
Яндекс Практикум
Наставник курса «React-разработчик»
Светлана Дучак
Яндекс Практикум
Редактор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Fri Sep 27 2024 11:57:20 GMT+0300 (Moscow Standard Time)