Добавление React в существующий проект

Если вы хотите добавить интерактивность в существующий проект, вам необязательно переписывать его полностью на React. Добавьте React в уже существующий стек, и осуществляйте отображение интерактивных React-компонентов где угодно.

Note

Вам нужно установить Node.js для локальной разработки. Хотя вы и можете попробовать React онлайн или на простой HTML странице, скорее всего большинство JavaScript инструментов, которыми вы будете пользоваться при разработке требуют наличие Node.js.

Использование React для выбранного пути имеющегося веб-сайта

Предположим, что у вас уже есть веб-приложение расположенное на домене example.com и построенное с помощью какой-либо серверной технологии (например, Rails). И теперь вы хотите перенести все пути, начинающиеся с example.com/some-app/ полностью на React.

Вот как мы рекомендуем это сделать:

  1. Разработайте часть приложения с использованием React, используя один из фреймворков основанных на нем.
  2. Укажите /some-app как базовый путь в конфигурационном файле вашего фреймворка (например: Next.js, Gatsby).
  3. Сконфигурируйте ваш сервер или прокси таким образом, чтобы все запросы с путем /some-app/ обрабатывались вашим React приложением.

Такой подход гарантирует, что часть вашего приложения, написанная на React, сможет получить максимум от best-practice подходов, используемых в основе этих фреймворков.

Большинство фреймворков построенных на основе React являются full-stack решениями и позволяют вашему React приложению получать больше преимуществ за счет использования сервера. Однако, вы можете использовать такой подход даже если вы не можете или не хотите запускать JavaScript на стороне сервера. В таком случае, используйте именованный экспорт HTML/CSS/JS (см. раздел next export для Next.js, и по умолчанию для Gatsby) на пути /some-app/.

Использование React, как часть имеющегося приложения

Предположим, что у вас уже есть веб-страница, разработанная с использованием другой технологии (или серверной, например, Rails, или клиентской, например, Backbone), и вы хотите отображать интерактивные React компоненты где-либо на этой странице. Далее приведен общепринятый подход к интеграции Данный подход является наиболее распространенным для интеграции React. Стоит заметить, что такой подход являлся также наиболее распространенным в компании Meta на протяжении многих лет!

Для его реализации выполните следующие шаги:

  1. Укажите среду исполнения JavaScript таким образом, чтобы можно было использовать синтаксис JSX, разделите ваш код на модули при помощи синтаксиса import / export, и воспользуйтесь пакетами (например, React) из репозитория пакетов npm.
  2. Отобразите ваши React компоненты там, где хотите, чтобы они располагались на странице.

Такой подход зависит от вашей текущей конфигурации страниц, так что нам необходимо обсудить несколько деталей.

Шаг 1: Задайте модульную среду исполнения JavaScript

Модульная среда исполнения JavaScript позволяет вам описывать ваши React компоненты в отдельных файлах, вместо того, чтобы писать весь ваш код в одном файле. Это также позволит вам пользоваться замечательными пакетами, опубликованные другими разработчиками в репозитории npm включая сам React! То, как это сделать – зависит от вашей текущей конфигурации:

Для того чтобы убедиться, что ваша конфигурация работает, запустите следующую команду внутри вашей папки проекта:

Terminal
npm install react react-dom

После чего, добавьте следующие строчки кода сверху вашего главного JavaScript файла (он может иметь название index.js или main.js):

import { createRoot } from 'react-dom/client';

// Очищаем существующий HTML контент
document.body.innerHTML = '<div id="app"></div>';

// Отображаем ваш React компонент вместо него
const root = createRoot(document.getElementById('app'));
root.render(<h1>Привет, мир</h1>);

Если абсолютно весь контент вашей страницы будет заменен фразой “Привет, мир!” - то все отработало правильно! Продолжайте прочтение.

Note

Интеграция модульной среды исполнения JavaScript в существующий проект может, поначалу, показаться устрашающим процессом, но оно того стоит! Если вы почувствуете затруднения, то попробуйте воспользоваться нашими общественными ресурсами или чатом Vite.

Шаг 2: Отображение React компонентов в любом месте страницы

В предыдущем шаге вы расположили следующий код сверху вашего главного файла:

import { createRoot } from 'react-dom/client';

// Очищаем существующий HTML контент
document.body.innerHTML = '<div id="app"></div>';

// Отображаем ваш React компонент вместо него
const root = createRoot(document.getElementById('app'));
root.render(<h1>Привет, мир</h1>);

Однако, как было описано ранее, это приведет к полному удалению контента страницы. Конечно же, вы не горите желанием удалять существующий HTML контент!

Поэтому, удалите этот код.

Вместо полной замены контента, вы, скорее всего, хотите отображать ваши React компоненты в конкретных местах вашего HTML кода. Откройте вашу HTML страницу (или шаблоны, расположенные на сервере, которые его генерируют) и добавьте уникальные id атрибуты к любому тегу, например:

<!-- ... где-то внутри вашего html ... -->
<nav id="navigation"></nav>
<!-- ... больше html ... -->

Это позволит вам, в дальнейшем, найти этот элемент при помощи вызова функции document.getElementById и передать его в функцию createRoot для отображения вашего React компонента внутри него:

import { createRoot } from 'react-dom/client';

function NavigationBar() {
  // TODO: реализовать NavBar
  return <h1>Вам привет от React!</h1>;
}

const domNode = document.getElementById('navigation');
const root = createRoot(domNode);
root.render(<NavigationBar />);

Обратите внимание, что оригинальный HTML контент, находящийся внутри файла index.html сохраняется и, в то же время, ваш React компонент NavigationBar так же отображается внутри элемента <nav id="navigation">, расположенном внутри вашего HTML кода. Рекомендуем вам прочитать документацию к использованию функции createRoot для более глубокого изучения процесса отображения React компонентов внутри существующих HTML странице.

Когда вы внедряете React в существующий проект, распространенным подходом является начинать с интеграции небольших интерактивных компонентов (например, кнопок), и затем постепенно продолжать”двигаться вперед” до тех пор, пока наконец, вся ваша страница не будет построена с использованием React. Если вы друг достигнете этой точки, то мы рекомендуем провести полную миграцию на любой основанный на React фреймворк сразу после этого, чтобы получить максимум выгоды от использования React.

Использование React Native в существующем нативном мобильном приложении

React Native так же может быть постепенно интегрирован в уже существующие нативные приложения. Если у вас есть существующее нативное приложения для Android (с использованием Java или Kotlin) или iOS (с использованием Objective-C или Swift), воспользуйтесь этой инструкцией для добавления React Native экрана в него.