Reaсt — это библиотека, отвечающая за построение пользовательского интерфейса сайта. Причём такого интерфейса, где есть не только текст, но и интерактивные элементы, динамика, разные события.
О чём речь? О возможности поставить лайк, например. Или отправить заполненную контактную форму. Или работать с картами, напичканными инфографикой. Или с административной панелью в интернет-магазине, где у товара, корзины и процесса отправки платежа бывает несколько состояний.
Все эти элементы и состояния — это маленькие программы, разрабатываемые на языке JavaScript и исполняемые браузером пользователя.
Итак, если одно действие пользователя на сайте должно приводить к каким-то изменениям, то происходить эти изменения будут по определённым сценариям — тем самым скриптам. Чтобы разработка сайта с большим количеством JavaScript-кода шла быстрее и удобнее для разработчика, используют React.
Чем сложнее сайт, тем призрачнее шанс сделать его без использования React и его основных конкурентов — фреймворков Angular и Vue.js.
Это видео ломает алгоритмы ютуба.
Как возник React
React появился в 2013 году. Его придумали в компании Facebook в процессе внедрения чата в свою социальную сеть. Чат должен был работать на всех страницах, но при этом не влиять и не попадать под влияние других элементов интерфейса.
RB рекомендует лучших поставщиков цифровых решений для вашего бизнеса — по ссылке
Но до этого была идея о том, что интернет будущего не должен состоять из унылого статичного HTML и CSS, как в середине 1990-х, а стать куда активнее и веселее. Чтобы этого достичь, нужен был язык с простыми правилами, доступными в первую очередь не программистам, а дизайнерам интерфейсов и любопытным пользователям интернета.
Что-то похожее на Java, но не такое сложное. Претендентом на такой язык был даже Python, но, после череды переименований и беготне по таймлайнам, под руководством Брендана Айка появился JavaScript.
Как JavaScript взаимодействует с веб-страницами
Любая веб-страница, если уметь читать её код, — это объекты, как бы вложенные друг в друга. Например, страница состоит из области head для заголовка, стилей, размера шрифта и прочей технической информации, и области body для основного содержимого. Получается такое ветвящееся дерево из HTML и CSS-объектов, которое называется DOM (Document Object Model).
Структура DOM для JavaScript — это интерфейс, посредством которого эти программы и сценарии заставляют неподвижные HTML и CSS-объекты шевелиться.
Но проблема в том, что классический DOM не предусматривает создания динамических интерфейсов, поэтому исполняемый на страницах JavaScript замедляет её отрисовку. Но React предлагает сначала создать более лёгкую по сравнению с DOM имитацию, которую называют Virtual DOM, изменить в этой копии только те объекты, на которые влияют пользовательские действия, и наложить эти изменения на реальный DOM.
Например, если на React-сайте есть чат, то браузер не будет обновлять страницу после каждого отправленного сообщения.
Эта ошибка УБИВАЕТ твой YouTube-канал! — Как Раскрутить Канал и Набрать Подписчиков на Ютубе в 2022?
В чём преимущества приложений, написанных на React
- Снижается нагрузка на сервер и время разработки. Повышается производительность сайта: быстрее открываются страницы и отзывается на действия пользователей интерфейс. Если обычное веб-приложение на запрос от браузера возвращает ему HTML-разметку с CSS, чтобы браузер отрисовал страницу, то в случае приложений на React браузер сначала скачивает набор скриптов, которые выполняются на устройстве пользователя. Это снимает нагрузку с сервера и повышает производительность.
- На React необязательно разрабатывать весь сайт, если динамичные блоки занимают лишь его малую часть. Пока статичные страницы работают как обычно, мы можем сделать на React конкретный блок и вставить скрипты так, чтобы они выполнялись только в нём. Есть компании, которые спустя годы переписывали свой продукт на React. Этот переход не обязательно делать сразу, но с точки зрения разработки это может оказаться удобнее.
- По сравнению с обычными сайтами у сайтов на React более чистая архитектура, в которой проще обнаруживать и исправлять баги и которую проще поддерживать. Разработчик контролирует потоки данных, разметку и стилизацию и в идеале знаком с паттернами программирования, позволяющими собирать приложения быстрее и гибче.
- Если команды фронтенд и бэкенд-разработки заранее опишут в документации формат получения и отправки данных между частями приложения, то они могут работать параллельно: пока серверная часть разрабатывается, фронтенд-разработчики на основе документации имитируют данные, которые будут приходить с сервера.
React и одностраничные приложения
Если нагрузка снимается с сервера, то она возрастает на стороне пользователя. Но статистика говорит, что у клиентских машин достаточно оперативной памяти для отрисовки страниц сайта на React в браузере.
Однако, если нужно получить максимально быстрый отклик от интерфейса, то используют подход SPA (Single Page Application). Его суть в том, что весь сайт — это одна страница, которую React постоянно перерисовывает. Но не целиком.
Как обычно происходит переход со страницы на страницу в простом приложении? При переходе на другую страницу пользователь делает к ней запрос на сервер, и сервер возвращает разметку, стили и файлы скриптов (то есть HTML, CSS и JavaScript).
В случае SPA пользователь, переходя между разделами сайта, формально находится на одной и той же странице, но файлы скриптов и стили у него уже есть — остаётся дотянуть то, чего не хватает. Например, если шапка сайта одинаковая на каждой странице, а поменялся только какой-то блок страницы, то не нужно заново отрисовывать шапку.
Это экономит ресурсы и даёт более быстрый и отзывчивый интерфейс. Владельцам интернет-магазина нужно дорожить каждым мигом: есть шанс потерять клиента, если он ждёт 5-10 секунд после нажатия кнопки.
Сайт одного из наших клиентов, сервиса для работы с инстаграм-инфлюенсерами Influize — типичный пример SPA с архитектурой headless Drupal.
React и поисковая оптимизация
Поисковая оптимизация — слабая часть React-приложений. Вред для бизнеса от плохого SEO понятен: если ваш сайт не видят поисковики, то его не существует.
Поэтому есть подход Server Side Rendering. Объясним его на примере наших разработок — уже упомянутого Influize и сайта сервиса по утилизации автомобилей Scrapi. Часть работы по отрисовке этих сайтов происходит на сервере (да, всё правильно, мы пришли к тому же, от чего пытались уйти), за что отвечает Next.js, фреймворк на базе React.
При запросе от браузера сервер отдаёт заранее отрисованную страницу — готовую и как будто собранную. Потом эти элементы начинают вести себя как React-компоненты на стороне клиента.
Таким образом, то, что видит пользователь, частично отрисовано на сервере, а остальное собирается в браузере. Иначе страницы сайта индексировались бы хуже.
Вместе с SPA-подходом это даёт то, что в среде веб-разработчиков известно как изоморфные приложения. Пользователи таких приложений получают отзывчивый интерфейс и быстрое отображение контента в уже загруженном приложении. Второе преимущество — решение проблем с SEO: если поисковик нашёл страницу, он сразу получит её разметку и сможет её индексировать, без ожидания, когда отработают скрипты.
Но отличие изоморфного приложения от простого в том, что когда пользователь уходит с одной страницы на другую, приложение уже работает как SPA.
Какие известные сайты и приложения разработаны на React.js
Миллиарды людей каждый день имеют дело с результатами работы React.js. Среди них:
- новостная лента в Facebook;
- большая часть клиентской стороны Instagram;
- частично WhatsApp;
- Netflix;
- New York Times;
- Yahoo! Mail;
- Dropbox;
- Codecademy.
JavaScript делает из простого сайта полезный рабочий инструмент. Но он обойдётся вам дороже, если команда использует классический подход к веб-разработке. Та команда, которая знает React, сэкономит вам деньги.
Эта библиотека отлично подходит для приложений с большим количеством интерактивных элементов и позволяет разработчику работать быстрее и полностью контролировать происходящее на стороне клиента. Если на вашем сайте предполагается много динамического контента — выбирайте команду, знающую React.
Фото на обложке: pixabay.com
Иллюстрация предоставлена автором.
Источник: rb.ru
React.js: что это, для чего нужен и как освоить начинающим
React подходит для приложений, которые нужно масштабировать и поддерживать.
Анастасия Хамидулина
Автор статьи
20 июля 2022 в 18:05
React (React.js или ReactJS) — это бесплатная библиотека JavaScript с открытым исходным кодом. Ее применяют, чтобы создавать пользовательские интерфейсы на основе компонентов.
Научиться frontend-разработке можно на курсе «Веб-разработчик». Сможете работать с HTML, CSS, языком JavaScript, библиотекой React и инструментами разработки. В каждом модуле сделаете проекты, чтобы закрепить навыки.
Для чего нужен React.js
React разработала и поддерживает компания Meta* (бывший Facebook) и сообщество отдельных разработчиков и компаний. React используют в разработке одностраничных, мобильных или серверных приложений. Но React занимается только управлением состоянием и рендерингом в DOM, поэтому при создании приложений нужны дополнительные библиотеки для маршрутизации.
Пример применения React в HTML c JSX и JavaScript:
import React from «react»; const Greeting = () => < return (
Hello, world!
); >; export default Greeting;
Особенности React
React придерживается парадигмы декларативного программирования. Разработчики создают описание вида (набора DOM-элементов) для каждого состояния приложения.
А React обновляет и отображает компоненты, когда меняют данные. Этим отличается от императивного программирования: там разработчики описывают конкретные шаги для перевода приложения в определенное состояние.
То есть при декларативном программировании (и React) описывают, что хотят получить. А при императивном подходе — как хотят что-то получить. Для создания пользовательских интерфейсов декларативный метод программирования подходит гораздо лучше. Поэтому он прижился в сообществе frontend-разработчиков.
Сейчас его применяют практически во всех библиотеках и фреймворках. Например, Vue.js, Svelte, SwiftUI, Flutter.
Основные аспекты при создании приложения с помощью библиотеки React — это состояния и компоненты.
✔️ Состояния
В школе нас учили, что различные объекты могут находиться в разных состояниях. Например, физические вещества — в четырех: твердом, жидком, газообразном и в плазме. В зависимости от состояния одно и то же вещество выглядит и ведет себя по-разному. При внешнем воздействии вещество переходит из одного состояния в другое: например, лед (твердый) становится водой (жидким), когда температура выше 0 °C.
Эти утверждения справедливы для компонентов и приложений на React. Мы задаем набор свойств, которые определяют состояние компонента. Отслеживаем изменения после действий пользователя или других воздействий. Перерисовываем интерфейс на основе текущих состояний компонента.
✔️ Компоненты
Приложение на React строят из компонентов — как здание из отдельных кирпичиков. Компоненты взаимодействуют между собой, могут быть сгруппированы в более сложные. Всё веб-приложение на React — это один большой компонент.
Веб-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT
Компонентом может быть отдельная кнопка, поле ввода или целая форма со множеством полей и элементами управления. То есть компонент — это изолированная и независимая сущность, которая реализует поведенческую логику. Эта логика зависит от параметров компонента и состояния. Изолированность и независимость компонентов позволяют использовать их в приложении множество раз.
Подробнее об этом узнаете на курсе «Веб-разработчик». Чтобы закрепить навыки, создадите музыкальный сервис, в котором реализуете витрину с треками, встроенный плеер, избранное и подборки. А при успешной сдаче итогового проекта получите диплом установленного образца.
Изначально компоненты в React описывали только с помощью JavaScript-функций:
function Welcome(props) < return Hello, ; >
Но когда появилась шестая версия спецификации ECMAScript-классов, React-компоненты стали описывать и с их помощью:
class Welcome extends React.Component < render() < return Hello, ; > >
Такой подход ближе разработчикам, которые знакомы с объектно-ориентированным программированием.
Простейшие компоненты генерируют отображение только на основании переданных им параметров (this.props). Это так называемые компоненты без состояния (stateless components):
class HelloMessage extends React.Component < render() < return Hello ; > > root.render();
Более сложные — компоненты с состоянием (stateful components) — генерируют каждое отображение на основе не только параметров, но и текущего состояния (this.state):
class Timer extends React.Component < constructor(props) < super(props); this.state = < seconds: 0 >; > tick() < this.setState(state =>(< seconds: state.seconds + 1 >)); > componentDidMount() < this.interval = setInterval(() =>this.tick(), 1000); > componentWillUnmount() < clearInterval(this.interval); >render() < return ( Seconds: ); > > root.render();
Компоненты в своих выходных данных могут ссылаться на другие. Это позволяет использовать одну и ту же абстракцию компонентов для любого уровня детализации. Кнопка, форма, диалог, экран и прочее:
function Welcome(props) < return Hello, ; > function App() < return ( ); >
Чем отличается приложение на чистом HTML и JavaScript от React
В React используют декларативный подход к написанию приложения. Он отличается от императивного подхода, который применяют при создании приложения на чистом HTML и JS.
На курсе «Веб-разработчик» научитесь работать и на чистом коде, и с помощью React.js. На практике разберетесь, в чём отличия и что использовать в тех или иных случаях. Получите готовую систему работы.
Рассмотрим примеры реализации простейшего приложения «Счетчик», чтобы показать основные различия.
Пример на чистом HTML и JavaScript
Counter App
Пример на React
Counter App
❗ В первом случае нам понадобилось писать служебный код, чтобы определить элементы кнопок и вывести результат. Это лишняя работа, потому что не относится напрямую к логике приложения.
❗ При использовании компонентов React достаточно добавить на страницу еще один тег App, чтобы получить два независимых счетчика. Это делает приложение легко расширяемым.
❗ Логика компонента React изолирована. Поэтому поток данных в приложении — более предсказуемый, что упрощает разработку и отладку.
Плюсы и минусы React
- Приложение создают на основе компонентов, поэтому его легко масштабировать и поддерживать.
- Декларативный подход позволяет избежать большого количества служебного кода — по сравнению с чистым HTML и JavaScript — и сосредоточиться на логике самого приложения.
- React — это уже не новая библиотека, за ней стоит крупная компания и большое сообщество разработчиков. То есть ее много раз тестировали, регулярно обновляют. А переход к новым версиям — максимально гладкий.
- Большая библиотека готовых React-компонентов ускорит создание конечного приложения.
- React увеличивает размер приложения, которое загружает пользователь (~40 Кб для пакетов React и React-dom).
- Возникнут дополнительные расходы вычислительных мощностей и памяти устройства.
- Чтобы начать разрабатывать на React, программист должен не только изучить библиотеку, но и привыкнуть к парадигме.
Для каких приложений подойдет React
1️⃣ Большой или средней сложности — несколько экранов, различные формы, много нестандартных элементов управления.
2️⃣ Над которым работает команда программистов — технология поможет быстрее договариваться и лучше поддерживать код.
3️⃣ Которые планируют расширять — изолированные компоненты позволяют легко масштабировать логику, использовать уже созданные решения.
4️⃣ Которые решили обновить — React можно добавлять в уже существующий проект, обновлять кодовую базу постепенно и точечно.
Почему сейчас стоит изучать React
✅ React — это востребованная технология: на React.js написаны яндекс, нетфликс и другие известные сервисы.
✅ Подходы React распространены во frontend-разработке — если изучить React, можно легко менять стек и осваивать новые технологии.
✅ Разработка пользовательских интерфейсов — развивающаяся отрасль: с помощью расширений React сможете создавать интерфейсы не только для веб-приложений, но и для мобильных платформ.
Как изучить React
Официальный сайт библиотеки на русском языке с актуальной информацией. Если знаете английский, то смотрите англоязычную версию.
Вводный тур по React. Проведет через основные этапы инициализации и начала работы над приложением. Познакомит с основными концептами React. Подскажет ссылки на ресурсы с ответами.
Документация. Подходит для более детального изучения библиотеки.
Блог. Подпишитесь, чтобы следить за последними обновлениями React.
Сообщество. В нём помогут с вопросами, на которых нет ответа в документации.
Гитхаб. Для тех, кто решил углубиться в React по полной.
Курс «Веб-разработчик» в Skypro. Изучите не только React, а еще и HTML и CSS, базовый синтаксис языка JavaScript, инструменты разработки. Сделаете проекты для портфолио: портал с продажей билетов и интерфейсом билетного контролера по QR, виджет погоды, игру, интернет-магазин и лендинг. Все домашки проверяют только практикующие веб-разработчики.
Источник: sky.pro
5 способов избежать повторного рендеринга компонентов React
От автора: компоненты React прошли долгий путь развития с момента их создания. Тем не менее, многим разработчикам трудно исправить ненужные повторные рендеринги. Однако существует множество способов избежать этой проблемы. В данной статье я расскажу о 5 методах, позволяющих избежать ненужных повторных рендерингов в компонентах React.
1. Мемоизация с использованием хуков useMemo() и UseCallback()
Мемоизация позволяет вашему коду перерисовывать компоненты только в случае изменения свойств. С помощью этой методики разработчики могут избежать ненужного рендеринга и снизить вычислительную нагрузку в приложениях. React предоставляет два хука для реализации мемоизации: useMemo() и UseCallback().
Эти хуки сокращают повторный рендеринг за счет кэширования и возврата одного и того же результата, если входные данные совпадают, без каких-либо вычислений. Когда входные данные изменяются, кеш становится недействительным и отображается новое состояние компонента.
useMemo()
Чтобы понять, как мы можем использовать хук useMemo(), давайте рассмотрим пример умножения двух чисел.
Источник: webformyself.com