Skip to content

docs: [RU] Translation update #237

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Mar 25, 2019
2 changes: 1 addition & 1 deletion docs/ru/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- vue-router 2.5.0+
- vue-loader 12.0.0+ & vue-style-loader 3.0.0+

Если вы ранее использовали Vue 2.2 с серверным рендерингом, вы заметите, что рекомендуемая структура кода теперь [немного отличается](./guide/structure.md) (с новой опцией [runInNewContext](./api/README.md#runinnewcontext), установленной в `false`). Ваше существующее приложение по-прежнему будет работать, но лучше внесите изменения с учётом новых рекомендаций.
Если вы ранее использовали Vue 2.2 с серверным рендерингом, вы заметите, что рекомендуемая структура кода теперь [немного отличается](./guide/structure.md) (с новой опцией [runInNewContext](./api/#runinnewcontext), установленной в `false`). Ваше существующее приложение по-прежнему будет работать, но лучше внесите изменения с учётом новых рекомендаций.
:::

## Что такое серверный рендеринг (SSR)?
Expand Down
76 changes: 69 additions & 7 deletions docs/ru/api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ bundleRenderer.renderToStream([context]): stream.Readable

### template

- **Тип:**
- `string`
- `string | (() => string | Promise<string>)` (с версии 2.6)

**При использовании строкового шаблона:**

Предоставляет шаблон для всей HTML-страницы. Шаблон должен содержать комментарий `<!--vue-ssr-outlet-->`, который определяет место подстановки отрендеренного контента приложения.

Шаблон также поддерживает базовые интерполяции с использованием контекста рендера:
Expand All @@ -101,27 +107,57 @@ bundleRenderer.renderToStream([context]): stream.Readable

С версии 2.5.0+, встраиваемый скрипт также автоматически удаляется в режиме production.

С версии 2.6.0+, если присутствует `context.nonce`, он будет добавлен как атрибут `nonce` во встраиваемый скрипт. Это позволит встраиваемому скрипту соответствовать CSP, который требует nonce.

Кроме того, когда предоставлен `clientManifest`, шаблон автоматически внедряет следующее:

- JavaScript и CSS ресурсы для клиентской части, необходимые для рендеринга (с асинхронными фрагментами добавляемыми автоматически);
- Оптимальные ресурсы `<link rel="preload/prefetch">` для отображаемой страницы.

Вы можете отключить все автоматические внедрения передав `inject: false` в рендерер.

**При использовании функции шаблона:**

::: warning ВНИМАНИЕ
Шаблоны в виде функции поддерживаются только с версии 2.6+ и при использовании `renderer.renderToString`. Это НЕ ПОДДЕРЖИВАЕТСЯ в `renderer.renderToStream`.
:::

Опция `template` также может быть функцией, которая возвращает отрендеренный HTML или Promise, который разрешится отрендеренным HTML. Это позволит использовать собственные строковые шаблоны JavaScript и потенциальные асинхронные операции в процессе рендеринга шаблона.

Функция принимает два аргумента:

1. Результат рендеринга компонента приложения в виде строки;
2. Объект контекста рендеринга.

Пример:

``` js
const renderer = createRenderer({
template: (result, context) => {
return `<html>
<head>${context.head}</head>
<body>${result}</body>
<html>`
}
})
```

Обратите внимание, что при использовании собственной функции для шаблона ничего автоматически не будет добавляться — вы полностью контролируете то, что будет включаться в HTML, но также нести ответственность за включение всего необходимого (например, ссылки на ресурсы, если вы используете bundle renderer).

См. также:

- [Использование шаблона страниц](../guide/#using-a-page-template)
- [Внедрение ресурсов вручную](../guide/build-config.md#manual-asset-injection)
- [Использование шаблона страниц](../guide/#испоnьзование-шабnона-страниц)
- [Внедрение ресурсов вручную](../guide/build-config.md#внедрение-ресурсов-вручную)

### clientManifest

Предоставляет объект манифеста клиентской сборки, сгенерированный `vue-server-renderer/client-plugin`. Клиентский манифест предоставляет для рендерера сборки необходимую информацию для автоматического внедрения ресурсов в шаблон HTML. Подробнее в разделе [Генерация `clientManifest`](../guide/build-config.md#generating-clientmanifest).
Предоставляет объект манифеста клиентской сборки, сгенерированный `vue-server-renderer/client-plugin`. Клиентский манифест предоставляет для рендерера сборки необходимую информацию для автоматического внедрения ресурсов в шаблон HTML. Подробнее в разделе [Генерация `clientManifest`](../guide/build-config.md#генерация-clientmanifest).

### inject

Контролирует, выполнять ли автоматические внедрения при использовании `template`. По умолчанию `true`.

См. также: [Внедрение ресурсов вручную](../guide/build-config.md#manual-asset-injection).
См. также: [Внедрение ресурсов вручную](../guide/build-config.md#внедрение-ресурсов-вручную).

### shouldPreload

Expand Down Expand Up @@ -166,7 +202,7 @@ const renderer = createBundleRenderer(bundle, {
- Используется только в `createBundleRenderer`
- Возможные значения: `boolean | 'once'` (`'once'` поддерживается только с версии 2.3.1+)

По умолчанию, рендерер сборки будет создавать новый контекст V8 для каждого рендеринга и повторно исполнять всю сборку. Это имеет некоторые преимущества — например, код приложения изолирован от процесса сервера и не нужно беспокоиться [о проблеме «синглтона с состоянием»](../guide/structure.md#avoid-stateful-singletons), которая упоминалась ранее в руководстве. Однако этот режим требует значительных затрат производительности, поскольку повторное выполнение сборки обходится дорого, особенно когда приложение становится большим.
По умолчанию, рендерер сборки будет создавать новый контекст V8 для каждого рендеринга и повторно исполнять всю сборку. Это имеет некоторые преимущества — например, код приложения изолирован от процесса сервера и не нужно беспокоиться [о проблеме «синглтона с состоянием»](../guide/structure.md#избегайте-сингnтонов-с-состоянием), которая упоминалась ранее в руководстве. Однако этот режим требует значительных затрат производительности, поскольку повторное выполнение сборки обходится дорого, особенно когда приложение становится большим.

По умолчанию эта опция имеет значение `true` для обеспечения обратной совместимости, но рекомендуется использовать `runInNewContext: false` или `runInNewContext: 'once'` всегда, когда это возможно.

Expand All @@ -185,11 +221,11 @@ const renderer = createBundleRenderer(bundle, {

- Используется только в `createBundleRenderer`

Указание пути базового каталога для серверной сборки для разрешения зависимостей из `node_modules` в нём. Это необходимо только в том случае, если сгенерированный файл сборки располагается в другом месте, в отличии от используемых NPM-зависимостей, или когда ваш `vue-server-renderer` подключен NPM-ссылкой в вашем текущем проекте.
Указание пути базового каталога для серверной сборки для разрешения зависимостей из `node_modules` в нём. Это необходимо только в том случае, если сгенерированный файл сборки располагается в другом месте, в отличии от используемых NPM-зависимостей, или когда ваш `vue-server-renderer` подключён NPM-ссылкой в вашем текущем проекте.

### cache

Реализация [кэширования на уровне компонентов](../guide/caching.md#component-level-caching). Объект кэша должен реализовать следующий интерфейс (соответствуя нотациям Flow):
Реализация [кэширования на уровне компонентов](../guide/caching.md#кэширование-на-уровне-компонентов). Объект кэша должен реализовать следующий интерфейс (соответствуя нотациям Flow):

``` js
type RenderCache = {
Expand Down Expand Up @@ -245,6 +281,32 @@ const renderer = createRenderer({

Например, можете посмотреть [серверную реализацию для директивы `v-show`](https://github.com/vuejs/vue/blob/dev/src/platforms/web/server/directives/show.js).

### serializer

> Добавлено в версии 2.6

Пользовательская функция сериализатора для `context.state`. Поскольку сериализованное состояние будет частью вашего итогового HTML, важно использовать функцию, которая должным образом экранирует символы HTML по соображениям безопасности. Сериализатор по умолчанию — [serialize-javascript](https://github.com/yahoo/serialize-javascript) с опцией `{ isJSON: true }`.

## Опции компонента только для сервера

### serverCacheKey

- **Тип:** `(props) => any`

Возвращает ключ кэша для компонента на основе входных параметров. НЕ ИМЕЕТ доступа к `this`.

Начиная с версии 2.6, вы можете явно отказываться от кэширования, возвращая значение `false`.

Подробнее в [Кэшировании на уровне компонентов](../guide/caching.html#кэширование-на-уровне-компонентов).

### serverPrefetch

- **Тип:** `() => Promise<any>`

Загрузка асинхронных данных во время рендеринга на стороне сервера. Он должен сохранить полученные данные в глобальном хранилище или вернуть Promise. Рендерер сервера будет дожидаться разрешения Promise в этом хуке. Этот хук имеет доступ к экземпляру компонента через `this`.

Подробнее в [Предзагрузке данных и состояния](../guide/data.html).

## Плагины webpack

Webpack плагины предоставляются как отдельные файлы, которые должны быть подключены напрямую:
Expand Down
2 changes: 1 addition & 1 deletion docs/ru/guide/build-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ const renderer = createBundleRenderer('/path/to/vue-ssr-server-bundle.json', {

Конфигурация клиентской части может оставаться практически такой же, как и базовой. Очевидно, вам нужно указать `entry` на файл входной точки клиентской части. Кроме того, если вы используете `CommonsChunkPlugin`, убедитесь, что используете его только в конфигурации клиентской части, потому что для серверной сборки требуется одна точка входа.

### Generating `clientManifest`
### Генерация `clientManifest`

> требуется версия 2.3.0+

Expand Down
4 changes: 4 additions & 0 deletions docs/ru/guide/caching.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ export default {

При возвращении константы компонент всегда будет кэшироваться, что отлично подходит для чисто статических компонентов.

::: tip Исключение из кэширования
С версии 2.6.0 можно явно возвращать `false` в `serverCacheKey`, чтобы не использовать компонент из кэша, а отрисовывать заново.
:::

### Когда использовать кэширование компонентов

Если рендерер найдёт попадание в кэше для компонента во время рендеринга, он будет напрямую переиспользовать кэшированный результат для всего поддерева. Это означает, что вы **НЕ ДОЛЖНЫ** кэшировать компонент когда:
Expand Down
Loading