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: docs/ru/README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
- vue-router 2.5.0+
8
8
- vue-loader 12.0.0+ & vue-style-loader 3.0.0+
9
9
10
-
Если вы ранее использовали Vue 2.2 с серверным рендерингом, вы заметите, что рекомендуемая структура кода теперь [немного отличается](./guide/structure.md) (с новой опцией [runInNewContext](./api/README.md#runinnewcontext), установленной в `false`). Ваше существующее приложение по-прежнему будет работать, но лучше внесите изменения с учётом новых рекомендаций.
10
+
Если вы ранее использовали Vue 2.2 с серверным рендерингом, вы заметите, что рекомендуемая структура кода теперь [немного отличается](./guide/structure.md) (с новой опцией [runInNewContext](./api/#runinnewcontext), установленной в `false`). Ваше существующее приложение по-прежнему будет работать, но лучше внесите изменения с учётом новых рекомендаций.
- `string | (() => string |Promise<string>)` (с версии 2.6)
90
+
91
+
**При использовании строкового шаблона:**
92
+
87
93
Предоставляет шаблон для всей HTML-страницы. Шаблон должен содержать комментарий `<!--vue-ssr-outlet-->`, который определяет место подстановки отрендеренного контента приложения.
88
94
89
95
Шаблон также поддерживает базовые интерполяции с использованием контекста рендера:
С версии 2.5.0+, встраиваемый скрипт также автоматически удаляется в режиме production.
103
109
110
+
С версии 2.6.0+, если присутствует `context.nonce`, он будет добавлен как атрибут `nonce` во встраиваемый скрипт. Это позволит встраиваемому скрипту соответствовать CSP, который требует nonce.
111
+
104
112
Кроме того, когда предоставлен `clientManifest`, шаблон автоматически внедряет следующее:
105
113
106
114
- JavaScript и CSS ресурсы для клиентской части, необходимые для рендеринга (с асинхронными фрагментами добавляемыми автоматически);
107
115
- Оптимальные ресурсы `<link rel="preload/prefetch">` для отображаемой страницы.
108
116
109
117
Вы можете отключить все автоматические внедрения передав `inject:false` в рендерер.
110
118
119
+
**При использовании функции шаблона:**
120
+
121
+
::: warning ВНИМАНИЕ
122
+
Шаблоны в виде функции поддерживаются только с версии 2.6+ и при использовании `renderer.renderToString`. Это НЕ ПОДДЕРЖИВАЕТСЯ в `renderer.renderToStream`.
123
+
:::
124
+
125
+
Опция `template` также может быть функцией, которая возвращает отрендеренный HTML или Promise, который разрешится отрендеренным HTML. Это позволит использовать собственные строковые шаблоны JavaScript и потенциальные асинхронные операции в процессе рендеринга шаблона.
126
+
127
+
Функция принимает два аргумента:
128
+
129
+
1. Результат рендеринга компонента приложения в виде строки;
130
+
2. Объект контекста рендеринга.
131
+
132
+
Пример:
133
+
134
+
``` js
135
+
constrenderer=createRenderer({
136
+
template: (result, context) => {
137
+
return`<html>
138
+
<head>${context.head}</head>
139
+
<body>${result}</body>
140
+
<html>`
141
+
}
142
+
})
143
+
```
144
+
145
+
Обратите внимание, что при использовании собственной функции для шаблона ничего автоматически не будет добавляться — вы полностью контролируете то, что будет включаться в HTML, но также нести ответственность за включение всего необходимого (например, ссылки на ресурсы, если вы используете bundle renderer).
- [Внедрение ресурсов вручную](../guide/build-config.md#внедрение-ресурсов-вручную)
115
151
116
152
### clientManifest
117
153
118
-
Предоставляет объект манифеста клиентской сборки, сгенерированный `vue-server-renderer/client-plugin`. Клиентский манифест предоставляет для рендерера сборки необходимую информацию для автоматического внедрения ресурсов в шаблон HTML. Подробнее в разделе [Генерация `clientManifest`](../guide/build-config.md#generating-clientmanifest).
154
+
Предоставляет объект манифеста клиентской сборки, сгенерированный `vue-server-renderer/client-plugin`. Клиентский манифест предоставляет для рендерера сборки необходимую информацию для автоматического внедрения ресурсов в шаблон HTML. Подробнее в разделе [Генерация `clientManifest`](../guide/build-config.md#генерация-clientmanifest).
119
155
120
156
### inject
121
157
122
158
Контролирует, выполнять ли автоматические внедрения при использовании `template`. По умолчанию `true`.
123
159
124
-
См. также: [Внедрение ресурсов вручную](../guide/build-config.md#manual-asset-injection).
160
+
См. также: [Внедрение ресурсов вручную](../guide/build-config.md#внедрение-ресурсов-вручную).
- Возможные значения: `boolean |'once'` (`'once'` поддерживается только с версии 2.3.1+)
168
204
169
-
По умолчанию, рендерер сборки будет создавать новый контекст V8 для каждого рендеринга и повторно исполнять всю сборку. Это имеет некоторые преимущества — например, код приложения изолирован от процесса сервера и не нужно беспокоиться [о проблеме «синглтона с состоянием»](../guide/structure.md#avoid-stateful-singletons), которая упоминалась ранее в руководстве. Однако этот режим требует значительных затрат производительности, поскольку повторное выполнение сборки обходится дорого, особенно когда приложение становится большим.
205
+
По умолчанию, рендерер сборки будет создавать новый контекст V8 для каждого рендеринга и повторно исполнять всю сборку. Это имеет некоторые преимущества — например, код приложения изолирован от процесса сервера и не нужно беспокоиться [о проблеме «синглтона с состоянием»](../guide/structure.md#избегайте-сингnтонов-с-состоянием), которая упоминалась ранее в руководстве. Однако этот режим требует значительных затрат производительности, поскольку повторное выполнение сборки обходится дорого, особенно когда приложение становится большим.
170
206
171
207
По умолчанию эта опция имеет значение `true` для обеспечения обратной совместимости, но рекомендуется использовать `runInNewContext:false` или `runInNewContext:'once'` всегда, когда это возможно.
Указание пути базового каталога для серверной сборки для разрешения зависимостей из `node_modules` в нём. Это необходимо только в том случае, если сгенерированный файл сборки располагается в другом месте, в отличии от используемых NPM-зависимостей, или когда ваш `vue-server-renderer`подключен NPM-ссылкой в вашем текущем проекте.
224
+
Указание пути базового каталога для серверной сборки для разрешения зависимостей из `node_modules` в нём. Это необходимо только в том случае, если сгенерированный файл сборки располагается в другом месте, в отличии от используемых NPM-зависимостей, или когда ваш `vue-server-renderer`подключён NPM-ссылкой в вашем текущем проекте.
189
225
190
226
### cache
191
227
192
-
Реализация [кэширования на уровне компонентов](../guide/caching.md#component-level-caching). Объект кэша должен реализовать следующий интерфейс (соответствуя нотациям Flow):
228
+
Реализация [кэширования на уровне компонентов](../guide/caching.md#кэширование-на-уровне-компонентов). Объект кэша должен реализовать следующий интерфейс (соответствуя нотациям Flow):
Например, можете посмотреть [серверную реализацию для директивы `v-show`](https://github.com/vuejs/vue/blob/dev/src/platforms/web/server/directives/show.js).
247
283
284
+
### serializer
285
+
286
+
> Добавлено в версии 2.6
287
+
288
+
Пользовательская функция сериализатора для `context.state`. Поскольку сериализованное состояние будет частью вашего итогового HTML, важно использовать функцию, которая должным образом экранирует символы HTML по соображениям безопасности. Сериализатор по умолчанию — [serialize-javascript](https://github.com/yahoo/serialize-javascript) с опцией `{ isJSON:true }`.
289
+
290
+
## Опции компонента только для сервера
291
+
292
+
### serverCacheKey
293
+
294
+
- **Тип:** `(props) => any`
295
+
296
+
Возвращает ключ кэша для компонента на основе входных параметров. НЕ ИМЕЕТ доступа к `this`.
297
+
298
+
Начиная с версии 2.6, вы можете явно отказываться от кэширования, возвращая значение `false`.
299
+
300
+
Подробнее в [Кэшировании на уровне компонентов](../guide/caching.html#кэширование-на-уровне-компонентов).
301
+
302
+
### serverPrefetch
303
+
304
+
- **Тип:** `() =>Promise<any>`
305
+
306
+
Загрузка асинхронных данных во время рендеринга на стороне сервера. Он должен сохранить полученные данные в глобальном хранилище или вернуть Promise. Рендерер сервера будет дожидаться разрешения Promise в этом хуке. Этот хук имеет доступ к экземпляру компонента через `this`.
307
+
308
+
Подробнее в [Предзагрузке данных и состояния](../guide/data.html).
309
+
248
310
## Плагины webpack
249
311
250
312
Webpack плагины предоставляются как отдельные файлы, которые должны быть подключены напрямую:
Конфигурация клиентской части может оставаться практически такой же, как и базовой. Очевидно, вам нужно указать `entry` на файл входной точки клиентской части. Кроме того, если вы используете `CommonsChunkPlugin`, убедитесь, что используете его только в конфигурации клиентской части, потому что для серверной сборки требуется одна точка входа.
Copy file name to clipboardExpand all lines: docs/ru/guide/caching.md
+4
Original file line number
Diff line number
Diff line change
@@ -73,6 +73,10 @@ export default {
73
73
74
74
При возвращении константы компонент всегда будет кэшироваться, что отлично подходит для чисто статических компонентов.
75
75
76
+
::: tip Исключение из кэширования
77
+
С версии 2.6.0 можно явно возвращать `false` в `serverCacheKey`, чтобы не использовать компонент из кэша, а отрисовывать заново.
78
+
:::
79
+
76
80
### Когда использовать кэширование компонентов
77
81
78
82
Если рендерер найдёт попадание в кэше для компонента во время рендеринга, он будет напрямую переиспользовать кэшированный результат для всего поддерева. Это означает, что вы **НЕ ДОЛЖНЫ** кэшировать компонент когда:
0 commit comments