React — это JavaScript-библиотека для создания пользовательских интерфейсов — такое определение дают авторы технологии. Разберём по частям.
JavaScript (JS) — это единственный язык программирования для описания поведения элементов на странице в браузере: он делает интерфейсы интерактивными. Простой пример работы JS — реакция на действия пользователя:
Например, в гугл-документах работа JavaScript выглядит так:
Комментарий в гугл-документе появляется без обновления страницы — это возможно благодаря JavaScript
Фреймворк ограничивает разработчика в выборе инструментов, но гарантирует, что решит типовые задачи однозначным способом по стандартам качества. Библиотека же не определяет, какие технологии использовать, что создавать и как, — это упрощает обучение и даёт больше гибкости, но возлагает на разработчика ответственность за код и выбранные инструменты.
Пользовательские интерфейсы — то, что видит пользователь на сайте, в мобильном приложении, VR-очках, чат-боте, на экране умных часов и так далее.
С определением разобрались, теперь о том, для чего нужен React.js и как его использовать.
React.js работает на идее декларативного подхода. Это называется «UI — функция данных» — разработчик описывает, как ведёт себя интерфейс в зависимости от данных и событий, например:
С React разработчику не придётся описывать подробности. Давайте сравним решение с библиотекой и без при такой задаче: удалить пользователя из списка чата, если другой пользователь нажал на крестик рядом с ним.
Фишка в том, что создание и конфигурация компонентов — это отдельные процессы. Сначала разработчик рассказывает, как выглядит и ведёт себя компонент, например кнопка, и какие его свойства можно настраивать. А потом размещает конфигурации кнопок в разных местах, условно: в форме — среднюю зелёную, в корзине — большую жёлтую, на главном экране — маленькую серую.
Можно сравнить, как выглядит код для одного и того же популярного приложения — списка задач, если использовать JavaScript без библиотек или JavaScript и React.
React 11 лет назад разработала Facebook*. Но сейчас React — это проект с открытым кодом, в который каждый разработчик может предлагать изменения. И популярен он не только у команды Цукерберга:
Сколько раз React устанавливали за пять лет, не возьмёмся считать:
React используют в браузере, в умных телевизорах и часах, в мобильных приложениях, очках виртуальной реальности, консольных приложениях и чат-ботах. Везде. И разработчиков легко понять: если нужно сменить платформу, не придётся с нуля изучать новую технологию. Вместо этого можно взять знакомый React и адаптировать для местного интерфейса.
Универсальность. React — это JavaScript-библиотека, а JavaScript — популярный язык программирования, который используется всюду. Ни одна другая JS-библиотека не работает в таком количестве окружений и на таком количестве устройств.
Гибкость. React гибкий, потому что позволяет:
Отличный DevX. UX — это пользовательский опыт, а DevX — опыт разработчика — то, насколько удобно, комфортно и просто разработчику взаимодействовать с технологией. И у React отличный DevX.
React существует 11 лет и за это время:
Всё это делает React удобным для разработчика. А ещё у библиотеки много пользователей — это значит, что есть у кого перенять опыт и попросить совета.
Читаемость. В React приложение разбито на компоненты, поэтому в 9 случаях из 10 при поломке видно, в какой части кода беда:
Если же что-то ломается в JavaScript, то разработчик сначала идёт плакать. Потому что проблема может быть и на стороне HTML, и на стороне JS, и на стыке этих технологий, когда случается «рассинхрон» данных и отображения. Часто нет понятного разделения на файлы, приходится копаться. И главное — починка одной кнопки не исправит автоматически остальные.
И на чистом JavaScript можно написать прекрасный задокументированный и эффективный код, так библиотеки и появляются. И в React можно написать плохо читаемый код с багами, но сама библиотека делает эту задачу сложнее. Если разработчику приходится писать сложный, запутанный код для решения типичной проблемы в React, он делает что-то неправильно и ему пора заглянуть в поисковик.
После освоения базы можно переходить к изучению React, например начать с официального туториала по React на русском языке.
Ускорить прогресс при изучении React.js помогает обратная связь, ревью кода. Благодаря ревью код становится рабочим, читаемым и соответствует стандартам отрасли. Поэтому изучать React лучше с наставником или в рамках учебной группы.
* сервис предоставляется организацией, признанной экстремистской на территории РФ