Skip to content

Commit 950a101

Browse files
docs: translate server-components.md to Русский
1 parent 5264b58 commit 950a101

1 file changed

Lines changed: 26 additions & 27 deletions

File tree

src/content/reference/rsc/server-components.md

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
---
2-
title: Server Components
2+
title: Компоненты сервера
33
---
4-
54
<RSC>
65

7-
Server Components предназначены для использования в [React Server Components](/learn/start-a-new-react-project#bleeding-edge-react-frameworks).
6+
Server Components используются в [React Server Components](/learn/start-a-new-react-project#bleeding-edge-react-frameworks).
87

98
</RSC>
109

1110
<Intro>
1211

13-
Server Components — это новый тип компонентов, которые рендерятся заранее, до сборки бандла, в среде, отдельной от вашего клиентского приложения или SSR-сервера.
12+
Server Components — это новый тип компонентов, которые рендерятся заранее, до бандлинга, в среде, отдельной от вашего клиентского приложения или SSR-сервера.
1413

1514
</Intro>
1615

17-
Эта отдельная среда — «сервер» в React Server Components. Server Components могут запускаться один раз во время сборки на вашем CI-сервере или для каждого запроса с помощью веб-сервера.
16+
Эта отдельная среда — «сервер» в React Server Components. Server Components могут запускаться один раз во время сборки на вашем CI-сервере или для каждого запроса с использованием веб-сервера.
1817

1918
<InlineToc />
2019

2120
<Note>
2221

23-
#### Как мне реализовать поддержку Server Components? {/*how-do-i-build-support-for-server-components*/}
22+
#### Как реализовать поддержку Server Components? {/*how-do-i-build-support-for-server-components*/}
2423

2524
Хотя React Server Components в React 19 стабильны и не будут ломаться между минорными версиями, базовые API, используемые для реализации бандлера или фреймворка React Server Components, не следуют semver и могут ломаться между минорными версиями в React 19.x.
2625

27-
Для поддержки React Server Components в качестве бандлера или фреймворка мы рекомендуем зафиксировать конкретную версию React или использовать Canary-релиз. Мы продолжим работать с бандлерами и фреймворками над стабилизацией API, используемых для реализации React Server Components, в будущем.
26+
Для поддержки React Server Components в качестве бандлера или фреймворка мы рекомендуем закрепиться на конкретной версии React или использовать Canary release. Мы продолжим работать с бандлерами и фреймворками над стабилизацией API, используемых для реализации React Server Components, в будущем.
2827

2928
</Note>
3029

@@ -58,9 +57,9 @@ app.get(`/api/content/:page`, async (req, res) => {
5857
});
5958
```
6059

61-
Этот шаблон означает, что пользователи должны загрузить и разобрать дополнительные 75K (gzipped) библиотек и дождаться второго запроса для получения данных после загрузки страницы, только чтобы отобразить статический контент, который не изменится в течение всего времени жизни страницы.
60+
Этот шаблон означает, что пользователям необходимо загрузить и разобрать дополнительные 75K (gzipped) библиотек и дождаться второго запроса для получения данных после загрузки страницы, только чтобы отрисовать статический контент, который не изменится в течение всего времени жизни страницы.
6261

63-
С помощью Server Components вы можете отрендерить эти компоненты один раз во время сборки:
62+
С помощью Server Components вы можете отрисовать эти компоненты один раз во время сборки:
6463

6564
```js
6665
import marked from 'marked'; // Не включено в бандл
@@ -74,13 +73,13 @@ async function Page({page}) {
7473
}
7574
```
7675

77-
Полученный результат затем может быть отрендерен серверной стороной (SSR) в HTML и загружен на CDN. Когда приложение загружается, клиент не увидит исходный компонент `Page` или ресурсоемкие библиотеки для рендеринга markdown. Клиент увидит только результат рендеринга:
76+
Полученный результат затем может быть отрендерен на стороне сервера (SSR) в HTML и загружен на CDN. Когда приложение загружается, клиент не увидит исходный компонент `Page` или ресурсоёмкие библиотеки для рендеринга markdown. Клиент увидит только отрисованный результат:
7877

7978
```js
8079
<div><!-- html для markdown --></div>
8180
```
8281

83-
Это означает, что контент виден во время первой загрузки страницы, а бандл не включает ресурсоемкие библиотеки, необходимые для рендеринга статического контента.
82+
Это означает, что контент виден во время первой загрузки страницы, а бандл не включает ресурсоёмкие библиотеки, необходимые для рендеринга статического контента.
8483

8584
<Note>
8685

@@ -92,14 +91,14 @@ async function Page({page}) {
9291
}
9392
```
9493

95-
Async Components — это новая функция Server Components, которая позволяет использовать `await` во время рендера.
94+
Async Components — это новая функция Server Components, которая позволяет использовать `await` при рендеринге.
9695

9796
См. [Async components with Server Components](#async-components-with-server-components) ниже.
9897

9998
</Note>
10099

101100
### Server Components с сервером {/*server-components-with-a-server*/}
102-
Server Components также могут запускаться на веб-сервере во время запроса страницы, позволяя вам получить доступ к вашему слою данных без необходимости создавать API. Они рендерятся до того, как ваше приложение будет собрано, и могут передавать данные и JSX в качестве пропсов клиентским компонентам.
101+
Server Components также могут запускаться на веб-сервере во время запроса страницы, позволяя вам получить доступ к вашему слою данных без необходимости создавать API. Они рендерятся до того, как ваше приложение будет сбандлено, и могут передавать данные и JSX в качестве пропсов Client Components.
103102

104103
Без Server Components часто приходится получать динамические данные на клиенте в Effect:
105104

@@ -150,7 +149,7 @@ app.get(`/api/authors/:id`, async (req, res) => {
150149
});
151150
```
152151

153-
С помощью Server Components вы можете получить данные и отрендерить их в компоненте:
152+
С помощью Server Components вы можете читать данные и рендерить их в компоненте:
154153

155154
```js
156155
import db from './database';
@@ -174,7 +173,7 @@ async function Author({id}) {
174173
}
175174
```
176175

177-
Затем бандлер объединяет данные, отрендеренные Server Components и динамические Client Components в бандл. При желании этот бандл может быть отрендерен серверной стороной (SSR) для создания начального HTML-кода страницы. Когда страница загружается, браузер не видит исходные компоненты `Note` и `Author`; клиенту отправляется только результат рендеринга:
176+
Затем бандлер объединяет данные, отрисованные Server Components и динамические Client Components в бандл. При желании этот бандл может быть отрендерен на стороне сервера (SSR) для создания начального HTML-кода страницы. Когда страница загружается, браузер не видит исходные компоненты `Note` и `Author`; клиенту отправляется только отрисованный результат:
178177

179178
```js
180179
<div>
@@ -183,17 +182,17 @@ async function Author({id}) {
183182
</div>
184183
```
185184

186-
Server Components могут быть сделаны динамическими путем повторного получения их с сервера, где они могут получить доступ к данным и снова отрендериться. Эта новая архитектура приложения сочетает простую модель «запрос/ответ» серверно-ориентированных многостраничных приложений с бесшовной интерактивностью клиентско-ориентированных одностраничных приложений, давая вам лучшее из обоих миров.
185+
Server Components могут быть сделаны динамическими путем повторного получения их с сервера, где они могут получить доступ к данным и снова отрисоваться. Эта новая архитектура приложения сочетает простую модель «запрос/ответ» серверно-ориентированных многостраничных приложений с бесшовной интерактивностью клиентско-ориентированных одностраничных приложений, предоставляя вам лучшее из обоих миров.
187186

188-
### Добавление интерактивности к Server Components {/*adding-interactivity-to-server-components*/}
187+
### Добавление интерактивности в Server Components {/*adding-interactivity-to-server-components*/}
189188

190-
Server Components не отправляются в браузер, поэтому они не могут использовать интерактивные API, такие как `useState`. Чтобы добавить интерактивность к Server Components, вы можете комбинировать их с Client Components, используя директиву `"use client"`.
189+
Server Components не отправляются в браузер, поэтому они не могут использовать интерактивные API, такие как `useState`. Чтобы добавить интерактивность в Server Components, вы можете комбинировать их с Client Components, используя директиву `"use client"`.
191190

192191
<Note>
193192

194-
#### Для Server Components нет директивы. {/*there-is-no-directive-for-server-components*/}
193+
#### Директивы для Server Components не существует. {/*there-is-no-directive-for-server-components*/}
195194

196-
Распространенное заблуждение заключается в том, что Server Components обозначаются `"use server"`, но для Server Components директивы нет. Директива `"use server"` используется для Server Functions.
195+
Распространенное заблуждение заключается в том, что Server Components обозначаются как `"use server"`, но директивы для Server Components не существует. Директива `"use server"` используется для Server Functions.
197196

198197
Для получения дополнительной информации см. документацию по [Directives](/reference/rsc/directives).
199198

@@ -237,7 +236,7 @@ export default function Expandable({children}) {
237236
}
238237
```
239238

240-
Это работает следующим образом: сначала рендерится `Notes` как Server Component, а затем бандлеру дается указание создать бандл для Client Component `Expandable`. В браузере Client Components увидят результат рендеринга Server Components, переданный в качестве пропсов:
239+
Это работает следующим образом: сначала `Notes` рендерится как Server Component, а затем бандлеру дается указание создать бандл для Client Component `Expandable`. В браузере Client Components увидят результат Server Components, переданный в качестве пропсов:
241240

242241
```js
243242
<head>
@@ -257,11 +256,11 @@ export default function Expandable({children}) {
257256
</body>
258257
```
259258

260-
### Async components with Server Components {/*async-components-with-server-components*/}
259+
### Async components с Server Components {/*async-components-with-server-components*/}
261260

262-
Server Components представляют новый способ написания компонентов с использованием async/await. Когда вы используете `await` в асинхронном компоненте, React приостанавливает выполнение и ждет разрешения промиса перед возобновлением рендеринга. Это работает между границами сервера и клиента с поддержкой потоковой передачи для Suspense.
261+
Server Components представляют новый способ написания компонентов с использованием async/await. Когда вы используете `await` в асинхронном компоненте, React приостанавливает выполнение и ждет разрешения промиса перед возобновлением рендеринга. Это работает на границах сервера/клиента с поддержкой потоковой передачи для Suspense.
263262

264-
Вы можете даже создать промис на сервере и дождаться его на клиенте:
263+
Вы можете даже создать промис на сервере и ожидать его на клиенте:
265264

266265
```js
267266
// Server Component
@@ -271,7 +270,7 @@ async function Page({id}) {
271270
// Приостановит выполнение Server Component.
272271
const note = await db.notes.get(id);
273272

274-
// ПРИМЕЧАНИЕ: не дожидается, начнется здесь и будет ждать на клиенте.
273+
// ПРИМЕЧАНИЕ: не ожидается, начнется здесь и будет ожидаться на клиенте.
275274
const commentsPromise = db.comments.get(note.id);
276275
return (
277276
<div>
@@ -291,12 +290,12 @@ import {use} from 'react';
291290

292291
function Comments({commentsPromise}) {
293292
// ПРИМЕЧАНИЕ: это возобновит промис с сервера.
294-
// Будет приостановлено до тех пор, пока данные не станут доступны.
293+
// Он будет приостановлен до тех пор, пока данные не станут доступны.
295294
const comments = use(commentsPromise);
296295
return comments.map(commment => <p>{comment}</p>);
297296
}
298297
```
299298

300-
Контент `note` является важными данными для рендеринга страницы, поэтому мы ждем его на сервере. Комментарии находятся ниже основной части страницы и имеют более низкий приоритет, поэтому мы запускаем промис на сервере и ждем его на клиенте с помощью API `use`. Это вызовет Suspend на клиенте, не блокируя рендеринг контента `note`.
299+
Контент `note` является важными данными для рендеринга страницы, поэтому мы ожидаем его на сервере. Комментарии находятся ниже основного контента и имеют более низкий приоритет, поэтому мы запускаем промис на сервере и ожидаем его на клиенте с помощью API `use`. Это приведет к приостановке выполнения на клиенте, не блокируя рендеринг контента `note`.
301300

302301
Поскольку асинхронные компоненты не поддерживаются на клиенте, мы ожидаем промис с помощью `use`.

0 commit comments

Comments
 (0)