You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/learn/add-react-to-an-existing-project.md
+22-23Lines changed: 22 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,15 @@
1
1
---
2
2
title: Добавление React в существующий проект
3
3
---
4
-
5
4
<Intro>
6
5
7
-
Если вы хотите добавить интерактивность в существующий проект, вам не обязательно переписывать его на React. Вы можете добавить React в свой текущий стек и рендерить интерактивные React-компоненты где угодно.
6
+
Если вы хотите добавить интерактивность в существующий проект, вам не нужно переписывать его на React. Добавьте React в свой текущий стек и отображайте интерактивные React-компоненты где угодно.
8
7
9
8
</Intro>
10
9
11
10
<Note>
12
11
13
-
**Для локальной разработки вам необходимо установить [Node.js](https://nodejs.org/en/).** Хотя вы можете [попробовать React](/learn/installation#try-react) онлайн или с простой HTML-страницей, большинство инструментов для разработки на JavaScript требуют Node.js.
12
+
**Для локальной разработки вам необходимо установить [Node.js](https://nodejs.org/en/).** Хотя вы можете [попробовать React](/learn/installation#try-react) онлайн или с простой HTML-страницей, на практике большинство инструментов для разработки на JavaScript, которые вы захотите использовать, требуют Node.js.
14
13
15
14
</Note>
16
15
@@ -22,30 +21,30 @@ title: Добавление React в существующий проект
22
21
23
22
1.**Создайте React-часть вашего приложения**, используя один из [фреймворков на базе React](/learn/start-a-new-react-project).
24
23
2.**Укажите `/some-app` в качестве *базового пути*** в конфигурации вашего фреймворка (вот как: [Next.js](https://nextjs.org/docs/app/api-reference/config/next-config-js/basePath), [Gatsby](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/path-prefix/)).
25
-
3.**Настройте ваш сервер или прокси**, чтобы все запросы по адресу `/some-app/` обрабатывались вашим React-приложением.
24
+
3.**Настройте ваш сервер или прокси-сервер** так, чтобы все запросы по адресу `/some-app/` обрабатывались вашим React-приложением.
26
25
27
-
Это гарантирует, что React-часть вашего приложения сможет [воспользоваться лучшими практиками](/learn/start-a-new-react-project#can-i-use-react-without-a-framework), встроенными в эти фреймворки.
26
+
Это гарантирует, что React-часть вашего приложения сможет [воспользоваться лучшими практиками](/learn/start-a-new-react-project#can-i-use-react-without-a-framework), заложенными в этих фреймворках.
28
27
29
-
Многие фреймворки на базе React являются полнофункциональными и позволяют вашему React-приложению использовать сервер. Однако вы можете использовать тот же подход, даже если вы не можете или не хотите запускать JavaScript на сервере. В этом случае вместо этого предоставьте HTML/CSS/JS экспорт ([`next export` output](https://nextjs.org/docs/advanced-features/static-html-export) для Next.js, по умолчанию для Gatsby) по адресу `/some-app/`.
28
+
Многие фреймворки на базе React являются полнофункциональными и позволяют вашему React-приложению использовать сервер. Однако вы можете использовать тот же подход, даже если вы не можете или не хотите запускать JavaScript на сервере. В этом случае вместо этого предоставьте HTML/CSS/JS экспорт ([вывод `next export`](https://nextjs.org/docs/advanced-features/static-html-export) для Next.js, по умолчанию для Gatsby) по адресу `/some-app/`.
30
29
31
30
## Использование React для части существующей страницы {/*using-react-for-a-part-of-your-existing-page*/}
32
31
33
-
Предположим, у вас есть существующая страница, созданная с использованием другой технологии (серверной, такой как Rails, или клиентской, такой как Backbone), и вы хотите рендерить интерактивные React-компоненты где-то на этой странице. Это распространенный способ интеграции React — на самом деле, именно так большая часть использования React выглядела в Meta на протяжении многих лет!
32
+
Предположим, у вас есть существующая страница, созданная с использованием другой технологии (либо серверной, как Rails, либо клиентской, как Backbone), и вы хотите отображать интерактивные React-компоненты где-то на этой странице. Это распространенный способ интеграции React — на самом деле, именно так выглядело большинство использований React в Meta на протяжении многих лет!
34
33
35
34
Вы можете сделать это в два шага:
36
35
37
36
1.**Настройте JavaScript-среду**, которая позволит вам использовать [синтаксис JSX](/learn/writing-markup-with-jsx), разбивать код на модули с помощью синтаксиса [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) / [`export`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) и использовать пакеты (например, React) из реестра пакетов [npm](https://www.npmjs.com/).
38
-
2.**Рендерите ваши React-компоненты** там, где вы хотите их видеть на странице.
37
+
2.**Отобразите ваши React-компоненты** там, где вы хотите их видеть на странице.
39
38
40
39
Точный подход зависит от вашей существующей конфигурации страницы, поэтому давайте рассмотрим некоторые детали.
Модульная JavaScript-среда позволяет писать ваши React-компоненты в отдельных файлах, в отличие от написания всего кода в одном файле. Она также позволяет использовать все замечательные пакеты, опубликованные другими разработчиками в реестре [npm](https://www.npmjs.com/) — включая сам React! Как это сделать, зависит от вашей существующей конфигурации:
43
+
Модульная JavaScript-среда позволяет писать ваши React-компоненты в отдельных файлах, в отличие от написания всего кода в одном файле. Она также позволяет использовать все замечательные пакеты, опубликованные другими разработчиками в реестре [npm](https://www.npmjs.com/) — включая сам React! То, как вы это сделаете, зависит от вашей существующей конфигурации:
45
44
46
-
***Если ваше приложение уже разбито на файлы, использующие операторы `import`,** попробуйте использовать уже имеющуюся настройку. Проверьте, вызывает ли написание `<div />` в вашем JS-коде ошибку синтаксиса. Если это вызывает ошибку синтаксиса, вам может потребоваться [трансформировать ваш JavaScript-код с помощью Babel](https://babeljs.io/setup) и включить [Babel React preset](https://babeljs.io/docs/babel-preset-react) для использования JSX.
45
+
***Если ваше приложение уже разбито на файлы, использующие `import`**, попробуйте использовать уже имеющуюся настройку. Проверьте, вызывает ли написание `<div />` в вашем JS-коде ошибку синтаксиса. Если это вызывает ошибку синтаксиса, вам может потребоваться [трансформировать ваш JavaScript-код с помощью Babel](https://babeljs.io/setup) и включить [Babel React preset](https://babeljs.io/docs/babel-preset-react) для использования JSX.
47
46
48
-
***Если у вашего приложения нет существующей настройки для компиляции модулей JavaScript,** настройте ее с помощью [Vite](https://vite.dev/). Сообщество Vite поддерживает [множество интеграций с бэкенд-фреймворками](https://github.com/vitejs/awesome-vite#integrations-with-backends), включая Rails, Django и Laravel. Если вашего бэкенд-фреймворка нет в списке, [следуйте этому руководству](https://vite.dev/guide/backend-integration.html), чтобы вручную интегрировать сборки Vite с вашим бэкендом.
47
+
***Если у вашего приложения нет существующей настройки для компиляции JavaScript-модулей**, настройте ее с помощью [Vite](https://vite.dev/). Сообщество Vite поддерживает [множество интеграций с бэкенд-фреймворками](https://github.com/vitejs/awesome-vite#integrations-with-backends), включая Rails, Django и Laravel. Если вашего бэкенд-фреймворка нет в списке, [следуйте этому руководству](https://vite.dev/guide/backend-integration.html), чтобы вручную интегрировать сборки Vite с вашим бэкендом.
49
48
50
49
Чтобы проверить, работает ли ваша настройка, выполните эту команду в папке вашего проекта:
Интеграция модульной JavaScript-среды в существующий проект впервые может показаться пугающей, но оно того стоит! Если у вас возникнут трудности, обратитесь к нашим [ресурсам сообщества](/community) или в [чат Vite](https://chat.vite.dev/).
87
+
Интеграция модульной JavaScript-среды в существующий проект впервые может показаться сложной, но оно того стоит! Если у вас возникнут трудности, обратитесь к нашим [ресурсам сообщества](/community) или в [чат Vite](https://chat.vite.dev/).
89
88
90
89
</Note>
91
90
92
-
### Шаг 2: Рендеринг React-компонентов в любом месте страницы {/*step-2-render-react-components-anywhere-on-the-page*/}
91
+
### Шаг 2: Отображение React-компонентов в любом месте страницы {/*step-2-render-react-components-anywhere-on-the-page*/}
93
92
94
-
В предыдущем шаге вы добавили этот код в начало вашего основного файла:
93
+
В предыдущем шаге вы поместили этот код в начало вашего основного файла:
Вместо этого вы, вероятно, захотите рендерить ваши React-компоненты в определенных местах вашего HTML. Откройте вашу HTML-страницу (или серверные шаблоны, которые ее генерируют) и добавьте уникальный атрибут [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) к любому тегу, например:
110
+
Вместо этого вы, вероятно, захотите отображать ваши React-компоненты в определенных местах вашего HTML. Откройте вашу HTML-страницу (или серверные шаблоны, которые ее генерируют) и добавьте уникальный атрибут [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) к любому тегу, например:
112
111
113
112
```html
114
113
<!-- ... где-то в вашем html ... -->
115
114
<navid="navigation"></nav>
116
115
<!-- ... еще html ... -->
117
116
```
118
117
119
-
Это позволит вам найти этот HTML-элемент с помощью [`document.getElementById`](https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById) и передать его в [`createRoot`](/reference/react-dom/client/createRoot), чтобы вы могли рендерить свой собственный React-компонент внутри:
118
+
Это позволит вам найти этот HTML-элемент с помощью [`document.getElementById`](https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById) и передать его в [`createRoot`](/reference/react-dom/client/createRoot), чтобы вы могли отобразить свой собственный React-компонент внутри:
Обратите внимание, как исходный HTML-контент из `index.html` сохраняется, но ваш собственный React-компонент `NavigationBar` теперь отображается внутри `<nav id="navigation">` из вашего HTML. Прочтите [документацию по использованию `createRoot`](/reference/react-dom/client/createRoot#rendering-a-page-partially-built-with-react), чтобы узнать больше о рендеринге React-компонентов внутри существующей HTML-страницы.
151
150
152
-
Когда вы внедряете React в существующий проект, часто начинают с небольших интерактивных компонентов (например, кнопок), а затем постепенно "движутся вверх", пока в конечном итоге вся ваша страница не будет построена с помощью React. Если вы когда-нибудь достигнете этой точки, мы рекомендуем сразу же перейти на [фреймворк React](/learn/start-a-new-react-project), чтобы получить максимальную отдачу от React.
151
+
Когда вы внедряете React в существующий проект, обычно начинают с небольших интерактивных компонентов (например, кнопок), а затем постепенно "движутся вверх", пока в конечном итоге вся ваша страница не будет построена с помощью React. Если вы когда-нибудь достигнете этой точки, мы рекомендуем сразу же перейти на [фреймворк React](/learn/start-a-new-react-project), чтобы получить максимальную отдачу от React.
153
152
154
153
## Использование React Native в существующем нативном мобильном приложении {/*using-react-native-in-an-existing-native-mobile-app*/}
155
154
156
-
[React Native](https://reactnative.dev/) также можно инкрементально интегрировать в существующие нативные приложения. Если у вас есть существующее нативное приложение для Android (Java или Kotlin) или iOS (Objective-C или Swift), [следуйте этому руководству](https://reactnative.dev/docs/integration-with-existing-apps), чтобы добавить в него экран React Native.
155
+
[React Native](https://reactnative.dev/) также можно постепенно интегрировать в существующие нативные приложения. Если у вас есть существующее нативное приложение для Android (Java или Kotlin) или iOS (Objective-C или Swift), [следуйте этому руководству](https://reactnative.dev/docs/integration-with-existing-apps), чтобы добавить в него экран React Native.
0 commit comments