Вопросы по React. Версия 2
React
, React Router
, библиотеки для React-приложений
Что такое React
?
React
- это JavaScript-библиотека
, предназначенная для создания быстрых и интерактивных пользовательских интерфейсов (user interfaces, UI) для веб- и мобильных приложений. Это открытая (с открытым исходным кодом), основанная на компонентах, библиотека для фронтенда, отвечающая только за слой представления (view) приложения.
Основная задача React
- разработка быстрых пользовательских интерфейсов. В нем используется виртуальная объектная модель документа (virtual document object model (DOM) - программный интерфейс приложения (application programming interface (API)), для HTML
и XML-документов
. Он определяет логическую структуру документа, способы доступа к документу и управления им. Виртуальный DOM
- это JavaScript-объект
, что повышает производительность приложения. Виртуальный DOM
быстрее обычного (браузерного, реального или настоящего). Мы можем использовать React
как на стороне клиента, так и на стороне сервера, а также вместе с другими фреймворками. В нем используются компоненты и различные паттерны проектирования для работы с данными, что улучшае т читаемость кода и облегчает поддержку больших приложений.
Как React
работает?
Разрабатывая клиентские приложения, команда разработчиков Facebook
осознала, что DOM
является медленным. Для того, чтобы сделать его быстрее, React
использует виртуальный DOM
, который, по сути, является представлением DOM-дерева
в JavaScript
. Когда возникает необходимость чтения или записи в DOM
, используется данное представление. Затем виртуальный DOM
пытается определить наиболее эффективный способ обновления реального DOM
.
В отличие от DOM-элементов
браузера, создание элементов в React
обходится гораздо дешевле (с точки зрения производительности). Виртуальный DOM
заботится об обновлении настоящего для полного совпадения с React-элементами
. Это объясняется тем, что JavaScript
очень быстрый, и хранение DOM-дерева
в виде об ъекта ускоряет модификацию последнего.
Что такое компонент?
Компоненты (components) - это основные строительные блоки любого React-приложения
. Как правило, приложение на React
состоит из множества компонентов. Проще говоря, компонент - это JavaScript-класс
или функция, опционально принимающие так называемые пропы (свойства, properties, props) и возвращающие элемент React
, описывающий, как должна выглядеть определенная часть UI
.
React-приложение
состоит из множества компонентов, каждый из которых отвечает за отрисовку (рендеринг, render) небольшой, переиспользуемой (reusable) части приложения. Компоненты могут вкладываться в другие компоненты, что обеспечивает возможность создания сложных приложений, состоящих из элементарных "кирпичиков" (это называется "композицией компонентов"). Также компоненты могут поддерживать внутреннее состояние - например, компонент TabList
может хранить переменную, значением которой является открытая вкладка.
class Welcome extends React.Component {
render() {
return <h1>Привет, народ!</h1>
}
}
Назовите преимущества и ограничения React
Преимущества
- Использование виртуального
DOM
для определения того, какие частиUI
подверглись изменениям, и повторный рендеринг только этих частей в реальномDOM
существенно повышают производительность приложения. JSX
(JavaScript
иXML
) делает код компонентов/блоков более читаемым. Он отчетливо показывает, как компоненты связаны (скомбинированы) между собой.- Связывание данных в
React
предоставляет хорошие условия для создания динамичных приложений. - Быстрый рендеринг. Использование встроенных методов для минимизации количества операций с
DOM
помогает оптимизировать и ускорить процесс обновления компонентов. - Тестируемость.
React
предоставляет отличные встроенные инструменты для тестирования и отладки кода. - Дружелюбность по отношению к
SEO
(search engine optimization - поисковая оптимизация).React
предоставляет возможность рендеринга страниц на стороне сервера и регистрации обработчиков событий на стороне клиента: _React.renderToString()
вызывается на сервере; _React.render()
вызывается на клиенте; _React
сохраняет разметку, сгенерированную на сервере, и добавляет к ней обработчики событий.
Ограничения
- Кривая обучения. Будучи библиотекой, а не полноценным фреймворком,
React
требует глубоких знаний по внедрениюUI
во фреймворкиMVC
(Model-View-Controller - Модель-Представление-Контроллер). - Одним из недостатков
React
также является ориентированность на слой представления. Для решения проблем "Представления" требуется поиск подходящей "Модели" и "Контроллера". - Разработка приложения без использования изоморфного подхода приводит к проблемам с индексацией приложения поисковыми роботами (речь идет о том, что одностраничные приложения (
SPA
) индексируются хуже статических).