@vue/language-service 2.0.13 → 2.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/data/language-blocks/cs.json +1034 -0
  2. package/data/language-blocks/en.json +204 -0
  3. package/data/language-blocks/fr.json +204 -0
  4. package/data/language-blocks/it.json +204 -0
  5. package/data/language-blocks/ja.json +204 -0
  6. package/data/language-blocks/ko.json +205 -1
  7. package/data/language-blocks/pt.json +204 -0
  8. package/data/language-blocks/ru.json +1034 -0
  9. package/data/language-blocks/zh-cn.json +205 -1
  10. package/data/model-modifiers/cs.json +176 -0
  11. package/data/model-modifiers/en.json +36 -0
  12. package/data/model-modifiers/fr.json +36 -0
  13. package/data/model-modifiers/it.json +36 -0
  14. package/data/model-modifiers/ja.json +36 -0
  15. package/data/model-modifiers/ko.json +36 -0
  16. package/data/model-modifiers/pt.json +36 -0
  17. package/data/model-modifiers/ru.json +176 -0
  18. package/data/model-modifiers/zh-cn.json +36 -0
  19. package/data/template/cs.json +1498 -0
  20. package/data/template/en.json +313 -1
  21. package/data/template/fr.json +315 -3
  22. package/data/template/it.json +312 -0
  23. package/data/template/ja.json +313 -1
  24. package/data/template/ko.json +316 -4
  25. package/data/template/pt.json +312 -0
  26. package/data/template/ru.json +1498 -0
  27. package/data/template/zh-cn.json +312 -0
  28. package/index.d.ts +1 -1
  29. package/index.js +3 -3
  30. package/lib/ideFeatures/nameCasing.d.ts +2 -2
  31. package/lib/ideFeatures/nameCasing.js +22 -34
  32. package/lib/plugins/data.js +18 -0
  33. package/lib/plugins/vue-codelens-references.js +1 -1
  34. package/lib/plugins/vue-document-drop.js +1 -1
  35. package/lib/plugins/vue-extract-file.js +2 -2
  36. package/lib/plugins/vue-sfc.d.ts +1 -1
  37. package/lib/plugins/vue-sfc.js +2 -2
  38. package/lib/plugins/vue-template.js +16 -15
  39. package/lib/plugins/vue-toggle-v-bind-codeaction.js +1 -1
  40. package/lib/plugins/vue-twoslash-queries.js +1 -1
  41. package/package.json +17 -17
  42. package/scripts/update-html-data.js +18 -0
@@ -0,0 +1,1498 @@
1
+ {
2
+ "version": 1.1,
3
+ "tags": [
4
+ {
5
+ "name": "Transition",
6
+ "description": {
7
+ "kind": "markdown",
8
+ "value": "\nОбеспечивает эффекты анимированного перехода **одного** элемента или компонента.\n\n- **Входные параметры**\n\n ```ts\n interface TransitionProps {\n /**\n * Используется для автоматической генерации CSS-классов перехода.\n * Например, `name: 'fade'` автоматически раскроется в `.fade-enter`,\n * `.fade-enter-active` и т.д.\n */\n name?: string\n /**\n * Применять ли СSS-классы переходов.\n * По умолчанию: true\n */\n css?: boolean\n /**\n * Указывает тип событий перехода, которые необходимо ждать \n * для определения момента окончания перехода.\n * По умолчанию автоматически выбирается тип с большей длительностью.\n */\n type?: 'transition' | 'animation'\n /**\n * Определяет длительность перехода.\n * По умолчанию Vue ждёт первого события `transitionend`\n * или `animationend` на корневом элементе.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * Управляет последовательностью переходов исчезновения/появления.\n * По умолчанию — одновременно.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * Применять ли переход при первоначальном рендере.\n * По умолчанию: false\n */\n appear?: boolean\n\n /**\n * Параметры для настройки классов перехода.\n * Используйте kebab-case в шаблонах, например enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **События**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (только для `v-show`)\n - `@appear-cancelled`\n\n- **Пример**\n\n Простой элемент:\n\n ```html\n <Transition>\n <div v-if=\"ok\">переключаемое содержимое</div>\n </Transition>\n ```\n\n Принудительный эффект перехода путем изменения атрибута `key`:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n Динамический компонент, используются параметры mode и appear:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n Прослушивание событий перехода:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">переключаемое содержимое</div>\n </Transition>\n ```\n\n- **См. также** [Руководство — Transition](https://ru.vuejs.org/guide/built-ins/transition.html)\n"
9
+ },
10
+ "attributes": [],
11
+ "references": [
12
+ {
13
+ "name": "en",
14
+ "url": "https://vuejs.org/api/built-in-components.html#transition"
15
+ },
16
+ {
17
+ "name": "zh-cn",
18
+ "url": "https://cn.vuejs.org/api/built-in-components.html#transition"
19
+ },
20
+ {
21
+ "name": "ja",
22
+ "url": "https://ja.vuejs.org/api/built-in-components.html#transition"
23
+ },
24
+ {
25
+ "name": "ua",
26
+ "url": "https://ua.vuejs.org/api/built-in-components.html#transition"
27
+ },
28
+ {
29
+ "name": "fr",
30
+ "url": "https://fr.vuejs.org/api/built-in-components.html#transition"
31
+ },
32
+ {
33
+ "name": "ko",
34
+ "url": "https://ko.vuejs.org/api/built-in-components.html#transition"
35
+ },
36
+ {
37
+ "name": "pt",
38
+ "url": "https://pt.vuejs.org/api/built-in-components.html#transition"
39
+ },
40
+ {
41
+ "name": "bn",
42
+ "url": "https://bn.vuejs.org/api/built-in-components.html#transition"
43
+ },
44
+ {
45
+ "name": "it",
46
+ "url": "https://it.vuejs.org/api/built-in-components.html#transition"
47
+ },
48
+ {
49
+ "name": "cs",
50
+ "url": "https://cs.vuejs.org/api/built-in-components.html#transition"
51
+ },
52
+ {
53
+ "name": "ru",
54
+ "url": "https://ru.vuejs.org/api/built-in-components.html#transition"
55
+ },
56
+ {
57
+ "name": "fa",
58
+ "url": "https://fa.vuejs.org/api/built-in-components.html#transition"
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "name": "TransitionGroup",
64
+ "description": {
65
+ "kind": "markdown",
66
+ "value": "\nОбеспечивает эффекты перехода для **нескольких** элементов или компонентов в списке.\n\n- **Входные параметры**\n\n `<TransitionGroup>` принимает те же параметры, что и `<Transition>`, за исключением `mode`, плюс два дополнительных параметра:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /*\n * Если не определен, то рендерится как fragment.\n */\n tag?: string\n /**\n * Для переопределения CSS-класса, применяемого во время анимаций перемещения.\n * Используйте kebab-case в шаблонах, например move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **События**\n\n `<TransitionGroup>` генерирует те же события, что и `<Transition>`.\n\n- **Подробности**\n\n По умолчанию `<TransitionGroup>` не создаёт DOM-элемент, но его можно задать с помощью параметра `tag`.\n\n Обратите внимание, что у каждого потомка `<transition-group>` должен быть [**уникальный ключ**](https://ru.vuejs.org/guide/essentials/list.html#maintaining-state-with-key) для правильной работы анимаций.\n\n `<TransitionGroup>` поддерживает анимации перемещения с помощью CSS трансформаций. Если положение потомка на экране изменится после обновления, ему будет добавлен CSS-класс (автоматически сгенерированный из атрибута `name` или заданный параметром `move-class`). Если после применения этого класса CSS-свойство `transform` возможно анимировать, элемент будет плавно перемещён в новое положение с помощью [техники FLIP](https://aerotwist.com/blog/flip-your-animations/).\n\n- **Пример**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **См. также** [Руководство — TransitionGroup](https://ru.vuejs.org/guide/built-ins/transition-group.html)\n"
67
+ },
68
+ "attributes": [],
69
+ "references": [
70
+ {
71
+ "name": "en",
72
+ "url": "https://vuejs.org/api/built-in-components.html#transitiongroup"
73
+ },
74
+ {
75
+ "name": "zh-cn",
76
+ "url": "https://cn.vuejs.org/api/built-in-components.html#transitiongroup"
77
+ },
78
+ {
79
+ "name": "ja",
80
+ "url": "https://ja.vuejs.org/api/built-in-components.html#transitiongroup"
81
+ },
82
+ {
83
+ "name": "ua",
84
+ "url": "https://ua.vuejs.org/api/built-in-components.html#transitiongroup"
85
+ },
86
+ {
87
+ "name": "fr",
88
+ "url": "https://fr.vuejs.org/api/built-in-components.html#transitiongroup"
89
+ },
90
+ {
91
+ "name": "ko",
92
+ "url": "https://ko.vuejs.org/api/built-in-components.html#transitiongroup"
93
+ },
94
+ {
95
+ "name": "pt",
96
+ "url": "https://pt.vuejs.org/api/built-in-components.html#transitiongroup"
97
+ },
98
+ {
99
+ "name": "bn",
100
+ "url": "https://bn.vuejs.org/api/built-in-components.html#transitiongroup"
101
+ },
102
+ {
103
+ "name": "it",
104
+ "url": "https://it.vuejs.org/api/built-in-components.html#transitiongroup"
105
+ },
106
+ {
107
+ "name": "cs",
108
+ "url": "https://cs.vuejs.org/api/built-in-components.html#transitiongroup"
109
+ },
110
+ {
111
+ "name": "ru",
112
+ "url": "https://ru.vuejs.org/api/built-in-components.html#transitiongroup"
113
+ },
114
+ {
115
+ "name": "fa",
116
+ "url": "https://fa.vuejs.org/api/built-in-components.html#transitiongroup"
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ "name": "KeepAlive",
122
+ "description": {
123
+ "kind": "markdown",
124
+ "value": "\nКэширует содержащиеся внутри динамически переключаемые компоненты.\n\n- **Входные параметры**\n\n ```ts\n interface KeepAliveProps {\n /**\n * Если определено, то только компоненты с подходящими под\n * `include` именами будут кэшированы.\n */\n include?: MatchPattern\n /**\n * Любой компонент с именем подходящим под `exclude`\n * не будет кэшироваться.\n */\n exclude?: MatchPattern\n /**\n * Максимальное количество кэшируемых экземпляров компонентов.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **Подробности**\n\n При оборачивании вокруг динамического компонента, `<KeepAlive>` кэширует неактивные экземпляры компонентов, не уничтожая их.\n\n В любой момент времени в качестве прямого потомка `<KeepAlive>` может быть только один активный экземпляр компонента.\n\n При переключении компонента внутри `<KeepAlive>` будут вызываться его хуки жизненного цикла `activated` и `deactivated` соответственно, предоставляя альтернативу хукам `mounted` и `unmounted`, которые не вызываются. Это относится как к непосредственному потомку `<KeepAlive>`, так и ко всем прочим его потомкам.\n\n- **Пример**\n\n Базовое использование:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Когда используется с `v-if` / `v-else` ветвями, одновременно должен рендериться только один компонент:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n Использование вместе с `<Transition>`:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n Использование `include` / `exclude`:\n\n ```html\n <!-- строка, с перечислением через запятую -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- регулярное выражение (используется `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- массив (используется `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Использование с `max`:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **См. также** [Руководство — KeepAlive](https://ru.vuejs.org/guide/built-ins/keep-alive.html)\n"
125
+ },
126
+ "attributes": [],
127
+ "references": [
128
+ {
129
+ "name": "en",
130
+ "url": "https://vuejs.org/api/built-in-components.html#keepalive"
131
+ },
132
+ {
133
+ "name": "zh-cn",
134
+ "url": "https://cn.vuejs.org/api/built-in-components.html#keepalive"
135
+ },
136
+ {
137
+ "name": "ja",
138
+ "url": "https://ja.vuejs.org/api/built-in-components.html#keepalive"
139
+ },
140
+ {
141
+ "name": "ua",
142
+ "url": "https://ua.vuejs.org/api/built-in-components.html#keepalive"
143
+ },
144
+ {
145
+ "name": "fr",
146
+ "url": "https://fr.vuejs.org/api/built-in-components.html#keepalive"
147
+ },
148
+ {
149
+ "name": "ko",
150
+ "url": "https://ko.vuejs.org/api/built-in-components.html#keepalive"
151
+ },
152
+ {
153
+ "name": "pt",
154
+ "url": "https://pt.vuejs.org/api/built-in-components.html#keepalive"
155
+ },
156
+ {
157
+ "name": "bn",
158
+ "url": "https://bn.vuejs.org/api/built-in-components.html#keepalive"
159
+ },
160
+ {
161
+ "name": "it",
162
+ "url": "https://it.vuejs.org/api/built-in-components.html#keepalive"
163
+ },
164
+ {
165
+ "name": "cs",
166
+ "url": "https://cs.vuejs.org/api/built-in-components.html#keepalive"
167
+ },
168
+ {
169
+ "name": "ru",
170
+ "url": "https://ru.vuejs.org/api/built-in-components.html#keepalive"
171
+ },
172
+ {
173
+ "name": "fa",
174
+ "url": "https://fa.vuejs.org/api/built-in-components.html#keepalive"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "name": "Teleport",
180
+ "description": {
181
+ "kind": "markdown",
182
+ "value": "\nПеремещает содержимое своего слота в другую часть DOM.\n\n- **Входные параметры**\n\n ```ts\n interface TeleportProps {\n /**\n * Обязательный. Задаёт целевой контейнер.\n * Может быть селектором или непосредственно элементом.\n */\n to: string | HTMLElement\n /**\n * Если `true`, содержимое останется на своем первоначальном\n * месте, вместо перемещения в целевой контейнер.\n * Может изменяться динамически.\n */\n disabled?: boolean\n }\n ```\n\n- **Пример**\n\n Указание целевого контейнера:\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n Перемещение по условию:\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **См. также** [Руководство — Teleport](https://ru.vuejs.org/guide/built-ins/teleport.html)\n"
183
+ },
184
+ "attributes": [],
185
+ "references": [
186
+ {
187
+ "name": "en",
188
+ "url": "https://vuejs.org/api/built-in-components.html#teleport"
189
+ },
190
+ {
191
+ "name": "zh-cn",
192
+ "url": "https://cn.vuejs.org/api/built-in-components.html#teleport"
193
+ },
194
+ {
195
+ "name": "ja",
196
+ "url": "https://ja.vuejs.org/api/built-in-components.html#teleport"
197
+ },
198
+ {
199
+ "name": "ua",
200
+ "url": "https://ua.vuejs.org/api/built-in-components.html#teleport"
201
+ },
202
+ {
203
+ "name": "fr",
204
+ "url": "https://fr.vuejs.org/api/built-in-components.html#teleport"
205
+ },
206
+ {
207
+ "name": "ko",
208
+ "url": "https://ko.vuejs.org/api/built-in-components.html#teleport"
209
+ },
210
+ {
211
+ "name": "pt",
212
+ "url": "https://pt.vuejs.org/api/built-in-components.html#teleport"
213
+ },
214
+ {
215
+ "name": "bn",
216
+ "url": "https://bn.vuejs.org/api/built-in-components.html#teleport"
217
+ },
218
+ {
219
+ "name": "it",
220
+ "url": "https://it.vuejs.org/api/built-in-components.html#teleport"
221
+ },
222
+ {
223
+ "name": "cs",
224
+ "url": "https://cs.vuejs.org/api/built-in-components.html#teleport"
225
+ },
226
+ {
227
+ "name": "ru",
228
+ "url": "https://ru.vuejs.org/api/built-in-components.html#teleport"
229
+ },
230
+ {
231
+ "name": "fa",
232
+ "url": "https://fa.vuejs.org/api/built-in-components.html#teleport"
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "name": "Suspense",
238
+ "description": {
239
+ "kind": "markdown",
240
+ "value": "\nИспользуется для оркестровки вложенных асинхронных зависимостей в дереве компонентов.\n\n- **Входные параметры**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **События**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **Подробности**\n\n `<Suspense>` принимает два слота: `#default` и `#fallback`. Он будет отображать содержимое `#fallback` слота во время рендеринга `#default` слота в памяти.\n\n Если он встречает асинхронные зависимости ([Асинхронные компоненты](https://ru.vuejs.org/guide/components/async.html) и компоненты с [`async setup()`](https://ru.vuejs.org/guide/built-ins/suspense.html#async-setup)) во время рендеринга `#default` слота, он будет ждать, пока все они не будут разрешены, прежде чем отобразить `#default` слот.\n\n- **См. также** [Руководство — Suspense](https://ru.vuejs.org/guide/built-ins/suspense.html)\n"
241
+ },
242
+ "attributes": [],
243
+ "references": [
244
+ {
245
+ "name": "en",
246
+ "url": "https://vuejs.org/api/built-in-components.html#suspense"
247
+ },
248
+ {
249
+ "name": "zh-cn",
250
+ "url": "https://cn.vuejs.org/api/built-in-components.html#suspense"
251
+ },
252
+ {
253
+ "name": "ja",
254
+ "url": "https://ja.vuejs.org/api/built-in-components.html#suspense"
255
+ },
256
+ {
257
+ "name": "ua",
258
+ "url": "https://ua.vuejs.org/api/built-in-components.html#suspense"
259
+ },
260
+ {
261
+ "name": "fr",
262
+ "url": "https://fr.vuejs.org/api/built-in-components.html#suspense"
263
+ },
264
+ {
265
+ "name": "ko",
266
+ "url": "https://ko.vuejs.org/api/built-in-components.html#suspense"
267
+ },
268
+ {
269
+ "name": "pt",
270
+ "url": "https://pt.vuejs.org/api/built-in-components.html#suspense"
271
+ },
272
+ {
273
+ "name": "bn",
274
+ "url": "https://bn.vuejs.org/api/built-in-components.html#suspense"
275
+ },
276
+ {
277
+ "name": "it",
278
+ "url": "https://it.vuejs.org/api/built-in-components.html#suspense"
279
+ },
280
+ {
281
+ "name": "cs",
282
+ "url": "https://cs.vuejs.org/api/built-in-components.html#suspense"
283
+ },
284
+ {
285
+ "name": "ru",
286
+ "url": "https://ru.vuejs.org/api/built-in-components.html#suspense"
287
+ },
288
+ {
289
+ "name": "fa",
290
+ "url": "https://fa.vuejs.org/api/built-in-components.html#suspense"
291
+ }
292
+ ]
293
+ },
294
+ {
295
+ "name": "component",
296
+ "description": {
297
+ "kind": "markdown",
298
+ "value": "\n«Мета-компонент» для отрисовки динамических компонентов.\n\n- **Входные параметры**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **Подробности**\n\n - Фактический компонент, который будет отображаться, определяется параметром `is`.\n\n - Когда `is` является строкой, это может быть либо имя HTML-тега, либо зарегистрированное имя компонента.\n\n - Кроме того, `is` может быть непосредственно связано с определением компонента.\n\n- **Пример**\n\n Рендеринг компонентов по зарегистрированному имени (Options API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n Рендеринг компонентов по определению (Composition API с `<script setup>`):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n Рендеринг HTML-элементов:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n Все [встроенные компоненты](./built-in-components) могут быть переданы в `is`, но их необходимо зарегистрировать, если хотите передать их по имени. Например:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n Регистрация не требуется, если передаете сам компонент в `is`, а не его имя, например, в `<script setup>`.\n\n Если `v-model` используется в теге `<component>`, компилятор шаблона расширит его до входного параметра `modelValue` и прослушивателя событий `update:modelValue`, как и для любого другого компонента. Однако это не будет совместимо с собственными HTML-элементами, такими как `<input>` или `<select>`. В результате использование `v-model` с динамически созданным собственным элементом не будет работать:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- ЭТО НЕ СРАБОТАЕТ, так как 'input' является собственным элементом HTML -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n На практике этот крайний случай встречается нечасто, поскольку в реальных приложениях нативные поля форм обычно оборачиваются в компоненты. Если необходимо использовать нативный элемент напрямую, то можно разделить `v-model` на атрибут и событие вручную.\n\n- **См. также** [Динамические компоненты](https://ru.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n"
299
+ },
300
+ "attributes": [],
301
+ "references": [
302
+ {
303
+ "name": "en",
304
+ "url": "https://vuejs.org/api/built-in-special-elements.html#component"
305
+ },
306
+ {
307
+ "name": "zh-cn",
308
+ "url": "https://cn.vuejs.org/api/built-in-special-elements.html#component"
309
+ },
310
+ {
311
+ "name": "ja",
312
+ "url": "https://ja.vuejs.org/api/built-in-special-elements.html#component"
313
+ },
314
+ {
315
+ "name": "ua",
316
+ "url": "https://ua.vuejs.org/api/built-in-special-elements.html#component"
317
+ },
318
+ {
319
+ "name": "fr",
320
+ "url": "https://fr.vuejs.org/api/built-in-special-elements.html#component"
321
+ },
322
+ {
323
+ "name": "ko",
324
+ "url": "https://ko.vuejs.org/api/built-in-special-elements.html#component"
325
+ },
326
+ {
327
+ "name": "pt",
328
+ "url": "https://pt.vuejs.org/api/built-in-special-elements.html#component"
329
+ },
330
+ {
331
+ "name": "bn",
332
+ "url": "https://bn.vuejs.org/api/built-in-special-elements.html#component"
333
+ },
334
+ {
335
+ "name": "it",
336
+ "url": "https://it.vuejs.org/api/built-in-special-elements.html#component"
337
+ },
338
+ {
339
+ "name": "cs",
340
+ "url": "https://cs.vuejs.org/api/built-in-special-elements.html#component"
341
+ },
342
+ {
343
+ "name": "ru",
344
+ "url": "https://ru.vuejs.org/api/built-in-special-elements.html#component"
345
+ },
346
+ {
347
+ "name": "fa",
348
+ "url": "https://fa.vuejs.org/api/built-in-special-elements.html#component"
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "name": "slot",
354
+ "description": {
355
+ "kind": "markdown",
356
+ "value": "\nОбозначает выходы содержимого слотов в шаблонах.\n\n- **Входные параметры**\n\n ```ts\n interface SlotProps {\n /**\n * Любые входные параметры, переданные в <slot>, передаются в качестве аргументов\n * для слотов с ограниченным пространством\n */\n [key: string]: any\n /**\n * Зарезервировано для указания имени слота.\n */\n name?: string\n }\n ```\n\n- **Подробности**\n\n Элемент `<slot>` может использовать атрибут `name` для указания имени слота. Если `name` не указано, он отобразит слот по умолчанию. Дополнительные атрибуты, переданные элементу slot, будут переданы в качестве входного параметра слота в слот с ограниченной областью действия, определенный в родительском элементе.\n\n Сам элемент будет заменен соответствующим содержимым слота.\n\n Элементы `<slot>` в шаблонах Vue скомпилированы в JavaScript, поэтому их не следует путать с [собственными элементами `<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot).\n\n- **См. также** [Компонент - Слоты](https://ru.vuejs.org/guide/components/slots.html)\n"
357
+ },
358
+ "attributes": [],
359
+ "references": [
360
+ {
361
+ "name": "en",
362
+ "url": "https://vuejs.org/api/built-in-special-elements.html#slot"
363
+ },
364
+ {
365
+ "name": "zh-cn",
366
+ "url": "https://cn.vuejs.org/api/built-in-special-elements.html#slot"
367
+ },
368
+ {
369
+ "name": "ja",
370
+ "url": "https://ja.vuejs.org/api/built-in-special-elements.html#slot"
371
+ },
372
+ {
373
+ "name": "ua",
374
+ "url": "https://ua.vuejs.org/api/built-in-special-elements.html#slot"
375
+ },
376
+ {
377
+ "name": "fr",
378
+ "url": "https://fr.vuejs.org/api/built-in-special-elements.html#slot"
379
+ },
380
+ {
381
+ "name": "ko",
382
+ "url": "https://ko.vuejs.org/api/built-in-special-elements.html#slot"
383
+ },
384
+ {
385
+ "name": "pt",
386
+ "url": "https://pt.vuejs.org/api/built-in-special-elements.html#slot"
387
+ },
388
+ {
389
+ "name": "bn",
390
+ "url": "https://bn.vuejs.org/api/built-in-special-elements.html#slot"
391
+ },
392
+ {
393
+ "name": "it",
394
+ "url": "https://it.vuejs.org/api/built-in-special-elements.html#slot"
395
+ },
396
+ {
397
+ "name": "cs",
398
+ "url": "https://cs.vuejs.org/api/built-in-special-elements.html#slot"
399
+ },
400
+ {
401
+ "name": "ru",
402
+ "url": "https://ru.vuejs.org/api/built-in-special-elements.html#slot"
403
+ },
404
+ {
405
+ "name": "fa",
406
+ "url": "https://fa.vuejs.org/api/built-in-special-elements.html#slot"
407
+ }
408
+ ]
409
+ },
410
+ {
411
+ "name": "template",
412
+ "description": {
413
+ "kind": "markdown",
414
+ "value": "\nТег `<template>` используется как \"псевдоэлемент\", когда мы хотим использовать встроенную директиву без отрисовки элемента в DOM.\n\n- **Подробности**\n\n Специальная обработка для `<template>` срабатывает только в том случае, если он используется с одной из этих директив:\n\n - `v-if`, `v-else-if` или `v-else`\n - `v-for`\n - `v-slot`\n\n Если не присутствует ни одна из этих директив, то вместо этого он будет отображаться как [нативный элемент `<template>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template).\n\n Элемент`<template>` в связке с `v-for` также может иметь [атрибут `key`](https://ru.vuejs.org/api/built-in-special-attributes.html#key). Все остальные атрибуты и директивы будут проигнорированы, так как они не имеют смысла без соответствующего элемента.\n\n Однофайловые компоненты используют [тег верхнего уровня `<template>`](https://ru.vuejs.org/api/sfc-spec.html#language-blocks) для оборачивания всего шаблона. Это использование отличается от описанного выше использования `<template>`. Этот тег верхнего уровня не является частью самого шаблона и не поддерживает синтаксис шаблона, например директивы.\n\n- **См. также**\n - [Руководство - `v-if` и `<template>`](https://ru.vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n - [Руководство - `v-for` и `<template>`](https://ru.vuejs.org/guide/essentials/list.html#v-for-on-template)\n - [Руководство - Именованные слоты](https://ru.vuejs.org/guide/components/slots.html#named-slots)\n"
415
+ },
416
+ "attributes": [],
417
+ "references": [
418
+ {
419
+ "name": "en",
420
+ "url": "https://vuejs.org/api/built-in-special-elements.html#template"
421
+ },
422
+ {
423
+ "name": "zh-cn",
424
+ "url": "https://cn.vuejs.org/api/built-in-special-elements.html#template"
425
+ },
426
+ {
427
+ "name": "ja",
428
+ "url": "https://ja.vuejs.org/api/built-in-special-elements.html#template"
429
+ },
430
+ {
431
+ "name": "ua",
432
+ "url": "https://ua.vuejs.org/api/built-in-special-elements.html#template"
433
+ },
434
+ {
435
+ "name": "fr",
436
+ "url": "https://fr.vuejs.org/api/built-in-special-elements.html#template"
437
+ },
438
+ {
439
+ "name": "ko",
440
+ "url": "https://ko.vuejs.org/api/built-in-special-elements.html#template"
441
+ },
442
+ {
443
+ "name": "pt",
444
+ "url": "https://pt.vuejs.org/api/built-in-special-elements.html#template"
445
+ },
446
+ {
447
+ "name": "bn",
448
+ "url": "https://bn.vuejs.org/api/built-in-special-elements.html#template"
449
+ },
450
+ {
451
+ "name": "it",
452
+ "url": "https://it.vuejs.org/api/built-in-special-elements.html#template"
453
+ },
454
+ {
455
+ "name": "cs",
456
+ "url": "https://cs.vuejs.org/api/built-in-special-elements.html#template"
457
+ },
458
+ {
459
+ "name": "ru",
460
+ "url": "https://ru.vuejs.org/api/built-in-special-elements.html#template"
461
+ },
462
+ {
463
+ "name": "fa",
464
+ "url": "https://fa.vuejs.org/api/built-in-special-elements.html#template"
465
+ }
466
+ ]
467
+ }
468
+ ],
469
+ "globalAttributes": [
470
+ {
471
+ "name": "v-text",
472
+ "description": {
473
+ "kind": "markdown",
474
+ "value": "\nОбновление текстового содержимого элемента.\n\n- **Ожидает:** `string`\n\n- **Подробности**\n\n `v-text` работает путём установки свойства [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) элемента, поэтому он будет перезаписывать всё существующее содержимое внутри элемента. Если необходимо обновить часть `textContent`, то вместо этого следует использовать [текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation).\n\n- **Пример**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- тоже самое -->\n <span>{{msg}}</span>\n ```\n\n- **См. также** [Синтаксис шаблонов - Текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n"
475
+ },
476
+ "references": [
477
+ {
478
+ "name": "en",
479
+ "url": "https://vuejs.org/api/built-in-directives.html#v-text"
480
+ },
481
+ {
482
+ "name": "zh-cn",
483
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-text"
484
+ },
485
+ {
486
+ "name": "ja",
487
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-text"
488
+ },
489
+ {
490
+ "name": "ua",
491
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-text"
492
+ },
493
+ {
494
+ "name": "fr",
495
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-text"
496
+ },
497
+ {
498
+ "name": "ko",
499
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-text"
500
+ },
501
+ {
502
+ "name": "pt",
503
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-text"
504
+ },
505
+ {
506
+ "name": "bn",
507
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-text"
508
+ },
509
+ {
510
+ "name": "it",
511
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-text"
512
+ },
513
+ {
514
+ "name": "cs",
515
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-text"
516
+ },
517
+ {
518
+ "name": "ru",
519
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-text"
520
+ },
521
+ {
522
+ "name": "fa",
523
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-text"
524
+ }
525
+ ]
526
+ },
527
+ {
528
+ "name": "v-html",
529
+ "description": {
530
+ "kind": "markdown",
531
+ "value": "\nОбновление свойства [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML) элемента.\n\n- **Ожидает:** `string`\n\n- **Подробности**\n\n Содержимое `v-html` вставляется как обычный HTML - синтаксис шаблонов Vue не обрабатывается. Если вы пытаетесь составить шаблоны с помощью `v-html`, попробуйте переосмыслить решение, используя вместо этого компоненты.\n\n :::warning Примечание о безопасности\n Динамический рендеринг произвольного HTML на вашем сайте может быть очень опасен, поскольку легко может привести к [XSS-атакам](https://en.wikipedia.org/wiki/Cross-site_scripting). Используйте `v-html` только для доверенного содержимого и **никогда** для содержимого, предоставляемого пользователем.\n :::\n\n В [однофайловых компонентах](https://ru.vuejs.org/guide/scaling-up/sfc.html) стили `scoped` не будут применяться к содержимому внутри `v-html`, поскольку этот HTML не обрабатывается компилятором шаблонов Vue. Если вы хотите использовать на содержимом `v-html` скопированный CSS, то вместо этого можно использовать [CSS модули](./sfc-css-features.html#css-modules) или дополнительный глобальный элемент `<style>` с ручной стратегией области применения, например BEM.\n\n\n- **Пример**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **См. также** [Синтаксис шаблонов - Сырой HTML](https://ru.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n"
532
+ },
533
+ "references": [
534
+ {
535
+ "name": "en",
536
+ "url": "https://vuejs.org/api/built-in-directives.html#v-html"
537
+ },
538
+ {
539
+ "name": "zh-cn",
540
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-html"
541
+ },
542
+ {
543
+ "name": "ja",
544
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-html"
545
+ },
546
+ {
547
+ "name": "ua",
548
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-html"
549
+ },
550
+ {
551
+ "name": "fr",
552
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-html"
553
+ },
554
+ {
555
+ "name": "ko",
556
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-html"
557
+ },
558
+ {
559
+ "name": "pt",
560
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-html"
561
+ },
562
+ {
563
+ "name": "bn",
564
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-html"
565
+ },
566
+ {
567
+ "name": "it",
568
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-html"
569
+ },
570
+ {
571
+ "name": "cs",
572
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-html"
573
+ },
574
+ {
575
+ "name": "ru",
576
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-html"
577
+ },
578
+ {
579
+ "name": "fa",
580
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-html"
581
+ }
582
+ ]
583
+ },
584
+ {
585
+ "name": "v-show",
586
+ "description": {
587
+ "kind": "markdown",
588
+ "value": "\nПереключение видимости элемента в зависимости от истинности значения выражения.\n\n- **Ожидает:** `any`\n\n- **Подробности**\n\n `v-show` работает, устанавливая CSS-свойство `display` с помощью встроенных стилей, и будет стараться соблюдать начальное значение `display`, когда элемент становится видимым. Также он запускает переходы анимации при изменении состояния.\n\n- **См. также** [Условная отрисовка - v-show](https://ru.vuejs.org/guide/essentials/conditional.html#v-show)\n"
589
+ },
590
+ "references": [
591
+ {
592
+ "name": "en",
593
+ "url": "https://vuejs.org/api/built-in-directives.html#v-show"
594
+ },
595
+ {
596
+ "name": "zh-cn",
597
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-show"
598
+ },
599
+ {
600
+ "name": "ja",
601
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-show"
602
+ },
603
+ {
604
+ "name": "ua",
605
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-show"
606
+ },
607
+ {
608
+ "name": "fr",
609
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-show"
610
+ },
611
+ {
612
+ "name": "ko",
613
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-show"
614
+ },
615
+ {
616
+ "name": "pt",
617
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-show"
618
+ },
619
+ {
620
+ "name": "bn",
621
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-show"
622
+ },
623
+ {
624
+ "name": "it",
625
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-show"
626
+ },
627
+ {
628
+ "name": "cs",
629
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-show"
630
+ },
631
+ {
632
+ "name": "ru",
633
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-show"
634
+ },
635
+ {
636
+ "name": "fa",
637
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-show"
638
+ }
639
+ ]
640
+ },
641
+ {
642
+ "name": "v-if",
643
+ "description": {
644
+ "kind": "markdown",
645
+ "value": "\nУсловное отображение элемента или фрагмента шаблона на основе истинности значения выражения.\n\n- **Ожидает:** `any`\n\n- **Подробности**\n\n При переключении директивы компонента `v-if`, элемент и содержащиеся в нём директивы/компоненты уничтожаются и создаются заново. Если начальное условие false, то внутреннее содержимое вообще не будет выведено.\n\n Может использоваться на `<template>` для обозначения условного блока, содержащего только текст или несколько элементов.\n\n Эта директива запускает переходы анимации при изменении своего состояния.\n\n При совместном использовании `v-if` имеет более высокий приоритет, чем `v-for`. Мы не рекомендуем использовать эти две директивы вместе на одном элементе — подробнее об этом см. в руководстве [по отрисовке списков](https://ru.vuejs.org/guide/essentials/list.html#v-for-with-v-if).\n\n- **См. также** [Условная отрисовка - v-if](https://ru.vuejs.org/guide/essentials/conditional.html#v-if)\n"
646
+ },
647
+ "references": [
648
+ {
649
+ "name": "en",
650
+ "url": "https://vuejs.org/api/built-in-directives.html#v-if"
651
+ },
652
+ {
653
+ "name": "zh-cn",
654
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-if"
655
+ },
656
+ {
657
+ "name": "ja",
658
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-if"
659
+ },
660
+ {
661
+ "name": "ua",
662
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-if"
663
+ },
664
+ {
665
+ "name": "fr",
666
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-if"
667
+ },
668
+ {
669
+ "name": "ko",
670
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-if"
671
+ },
672
+ {
673
+ "name": "pt",
674
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-if"
675
+ },
676
+ {
677
+ "name": "bn",
678
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-if"
679
+ },
680
+ {
681
+ "name": "it",
682
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-if"
683
+ },
684
+ {
685
+ "name": "cs",
686
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-if"
687
+ },
688
+ {
689
+ "name": "ru",
690
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-if"
691
+ },
692
+ {
693
+ "name": "fa",
694
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-if"
695
+ }
696
+ ]
697
+ },
698
+ {
699
+ "name": "v-else",
700
+ "valueSet": "v",
701
+ "description": {
702
+ "kind": "markdown",
703
+ "value": "\nОбозначает \"блок else\" для `v-if` или цепочку `v-if` / `v-else-if`.\n\n- **Не ожидает выражения**\n\n- **Подробности**\n\n - Ограничение: предыдущий соседний элемент должен иметь `v-if` или `v-else-if`.\n\n - Может использоваться на `<template>` для обозначения условного блока, содержащего только текст или несколько элементов.\n\n- **Пример**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Сейчас ты видишь меня\n </div>\n <div v-else>\n А сейчас нет\n </div>\n ```\n\n- **См. также** [Условная отрисовка - v-else](https://ru.vuejs.org/guide/essentials/conditional.html#v-else)\n"
704
+ },
705
+ "references": [
706
+ {
707
+ "name": "en",
708
+ "url": "https://vuejs.org/api/built-in-directives.html#v-else"
709
+ },
710
+ {
711
+ "name": "zh-cn",
712
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-else"
713
+ },
714
+ {
715
+ "name": "ja",
716
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-else"
717
+ },
718
+ {
719
+ "name": "ua",
720
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-else"
721
+ },
722
+ {
723
+ "name": "fr",
724
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-else"
725
+ },
726
+ {
727
+ "name": "ko",
728
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-else"
729
+ },
730
+ {
731
+ "name": "pt",
732
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-else"
733
+ },
734
+ {
735
+ "name": "bn",
736
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-else"
737
+ },
738
+ {
739
+ "name": "it",
740
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-else"
741
+ },
742
+ {
743
+ "name": "cs",
744
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-else"
745
+ },
746
+ {
747
+ "name": "ru",
748
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-else"
749
+ },
750
+ {
751
+ "name": "fa",
752
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-else"
753
+ }
754
+ ]
755
+ },
756
+ {
757
+ "name": "v-else-if",
758
+ "description": {
759
+ "kind": "markdown",
760
+ "value": "\nОбозначает \"блок else if\" для `v-if`. Можно использовать для создания цепочек условий.\n\n- **Ожидает:** `any`\n\n- **Подробности**\n\n - Ограничение: предыдущий соседний элемент должен иметь `v-if` или `v-else-if`.\n\n - Может использоваться на `<template>` для обозначения условного блока, содержащего только текст или несколько элементов.\n\n- **Пример**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Не A/B/C\n </div>\n ```\n\n- **См. также** [Условная отрисовка - v-else-if](https://ru.vuejs.org/guide/essentials/conditional.html#v-else-if)\n"
761
+ },
762
+ "references": [
763
+ {
764
+ "name": "en",
765
+ "url": "https://vuejs.org/api/built-in-directives.html#v-else-if"
766
+ },
767
+ {
768
+ "name": "zh-cn",
769
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-else-if"
770
+ },
771
+ {
772
+ "name": "ja",
773
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-else-if"
774
+ },
775
+ {
776
+ "name": "ua",
777
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-else-if"
778
+ },
779
+ {
780
+ "name": "fr",
781
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-else-if"
782
+ },
783
+ {
784
+ "name": "ko",
785
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-else-if"
786
+ },
787
+ {
788
+ "name": "pt",
789
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-else-if"
790
+ },
791
+ {
792
+ "name": "bn",
793
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-else-if"
794
+ },
795
+ {
796
+ "name": "it",
797
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-else-if"
798
+ },
799
+ {
800
+ "name": "cs",
801
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-else-if"
802
+ },
803
+ {
804
+ "name": "ru",
805
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-else-if"
806
+ },
807
+ {
808
+ "name": "fa",
809
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-else-if"
810
+ }
811
+ ]
812
+ },
813
+ {
814
+ "name": "v-for",
815
+ "description": {
816
+ "kind": "markdown",
817
+ "value": "\nМногократная отрисовка элемента или блока шаблона на основе исходных данных.\n\n- **Ожидает:** `Array | Object | number | string | Iterable`\n\n- **Подробности**\n\n Значение директивы должно использовать специальный синтаксис `alias in expression` для указания псевдонима текущего итерируемого элемента:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n Кроме того, можно указать псевдоним для индекса (или ключа, если он используется для объекта):\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n По умолчанию `v-for` будет обновлять элементы «на месте», не перемещая их. Если необходимо переупорядочивать элементы при изменениях, то потребуется указывать специальный атрибут `key`:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` может также работать со значениями, реализующими [протокол Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), включая нативные `Map` и `Set`.\n\n- **См. также**\n - [Отрисовка списков](https://ru.vuejs.org/guide/essentials/list.html)\n"
818
+ },
819
+ "references": [
820
+ {
821
+ "name": "en",
822
+ "url": "https://vuejs.org/api/built-in-directives.html#v-for"
823
+ },
824
+ {
825
+ "name": "zh-cn",
826
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-for"
827
+ },
828
+ {
829
+ "name": "ja",
830
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-for"
831
+ },
832
+ {
833
+ "name": "ua",
834
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-for"
835
+ },
836
+ {
837
+ "name": "fr",
838
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-for"
839
+ },
840
+ {
841
+ "name": "ko",
842
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-for"
843
+ },
844
+ {
845
+ "name": "pt",
846
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-for"
847
+ },
848
+ {
849
+ "name": "bn",
850
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-for"
851
+ },
852
+ {
853
+ "name": "it",
854
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-for"
855
+ },
856
+ {
857
+ "name": "cs",
858
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-for"
859
+ },
860
+ {
861
+ "name": "ru",
862
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-for"
863
+ },
864
+ {
865
+ "name": "fa",
866
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-for"
867
+ }
868
+ ]
869
+ },
870
+ {
871
+ "name": "v-on",
872
+ "description": {
873
+ "kind": "markdown",
874
+ "value": "\nПрикрепление к элементу обработчика событий.\n\n- **Сокращённая запись:** `@`\n\n- **Ожидает:** `Function | Inline Statement | Object (без аргументов)`\n\n- **Аргумент:** `event` (необязательно, если используется синтаксис Object)\n\n- **Модификаторы**\n\n - `.stop` - вызывает `event.stopPropagation()`.\n - `.prevent` - вызывает `event.preventDefault()`.\n - `.capture` - добавить обработчик событий в capture режиме.\n - `.self` - запускать обработчик только в том случае, если событие было отправлено именно от этого элемента.\n - `.{keyAlias}` - запускать обработчик только по определенным клавишам.\n - `.once` - обработчик сработает только один раз.\n - `.left` - обработчик срабатывания только для событий левой кнопки мыши.\n - `.right` - обработчик срабатывания только для событий правой кнопки мыши.\n - `.middle` - обработчик срабатывания только для событий средней кнопки мыши.\n - `.passive` - добавляет обработчик DOM события с параметром `{ passive: true }`.\n\n- **Подробности**\n\n Тип события обозначается аргументом. Выражение может быть именем метода, строковым оператором или опущено, если присутствуют модификаторы.\n\n При использовании на обычном элементе он прослушивает только [**нативные DOM события**](https://developer.mozilla.org/en-US/docs/Web/Events). При использовании на компоненте он прослушивает **пользовательские события**, генерируемые в дочернем компоненте.\n\n При прослушивании нативных DOM событий метод получает нативное событие в качестве единственного аргумента. При использовании inline-выражения, выражение имеет доступ к специальному свойству `$event`: `v-on:click=\"handle('ok', $event)\"`.\n\n `v-on` также поддерживает привязку к объекту пар событие/слушатель без аргумента. Обратите внимание, что при использовании синтаксиса объекта он не поддерживает никаких модификаторов.\n\n- **Пример**\n\n ```html\n <!-- метод в качестве обработчика -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- динамическое событие -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- inline-выражение -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- сокращённая запись -->\n <button @click=\"doThis\"></button>\n\n <!-- окращённая запись динамического события -->\n <button @[event]=\"doThis\"></button>\n\n <!-- stop propagation -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- prevent default -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- prevent default без выражения -->\n <form @submit.prevent></form>\n\n <!-- цепочка из модификаторов -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- модификатор клавиши с использованием keyAlias -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- обработчик события будет вызван не больше одного раза -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- объектный синтаксис -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n Отслеживание пользовательских событий на дочернем компоненте (обработчик вызывается, когда в дочернем компоненте будет сгенерировано событие \"my-event\"):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- inline statement -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **См. также**\n - [Обработка событий](https://ru.vuejs.org/guide/essentials/event-handling.html)\n - [Компоненты - Прослушивание событий](https://ru.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n"
875
+ },
876
+ "references": [
877
+ {
878
+ "name": "en",
879
+ "url": "https://vuejs.org/api/built-in-directives.html#v-on"
880
+ },
881
+ {
882
+ "name": "zh-cn",
883
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-on"
884
+ },
885
+ {
886
+ "name": "ja",
887
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-on"
888
+ },
889
+ {
890
+ "name": "ua",
891
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-on"
892
+ },
893
+ {
894
+ "name": "fr",
895
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-on"
896
+ },
897
+ {
898
+ "name": "ko",
899
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-on"
900
+ },
901
+ {
902
+ "name": "pt",
903
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-on"
904
+ },
905
+ {
906
+ "name": "bn",
907
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-on"
908
+ },
909
+ {
910
+ "name": "it",
911
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-on"
912
+ },
913
+ {
914
+ "name": "cs",
915
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-on"
916
+ },
917
+ {
918
+ "name": "ru",
919
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-on"
920
+ },
921
+ {
922
+ "name": "fa",
923
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-on"
924
+ }
925
+ ]
926
+ },
927
+ {
928
+ "name": "v-bind",
929
+ "description": {
930
+ "kind": "markdown",
931
+ "value": "\nДинамически привязывает один или несколько атрибутов или входных параметров компонента к выражению.\n\n- **Сокращённая запись**\n - `:` или `.` (при использовании модификатора `.prop`)\n - Пропуск значения (когда атрибут и связанное значение имеют одинаковое имя) <sup class=\"vt-badge\">3.4+</sup>\n\n- **Ожидает:** `any (если указан аргумент) | Object (без аргумента)`\n\n- **Аргумент:** `attrOrProp (опционально)`\n\n- **Модификаторы**\n\n - `.camel` - преобразование имён атрибутов из kebab-case в camelCase.\n - `.prop` - принудительная установить привязку в качестве свойства DOM. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - принудительно установить привязку в качестве атрибута DOM. <sup class=\"vt-badge\">3.2+</sup>\n\n- **Применение**\n\n При использовании для привязки атрибутов `class` или `style`, `v-bind` поддерживает дополнительные типы значений, такие как Array или Objects. Более подробная информация приведена в разделе руководства по ссылкам ниже.\n\n Устанавливая привязку к элементу, Vue по умолчанию проверяет, имеет ли элемент ключ, определенный как свойство, используя проверку оператора `in`. Если свойство определено, то Vue установит значение как свойство DOM, а не как атрибут. В большинстве случаев это должно работать, но вы можете переопределить это поведение, явно используя модификаторы `.prop` или `.attr`. Иногда это необходимо, особенно при [работе с пользовательскими элементами](https://ru.vuejs.org/guide/extras/web-components.html#passing-dom-properties).\n\n При привязке входных параметров к дочернему компоненту необходимо также объявлять их внутри него.\n\n При использовании без аргумента можно привязать объект из пар имя-значение.\n\n- **Пример**\n\n ```html\n <!-- привязка атрибута -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- динамическое название атрибута -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- сокращённая запись -->\n <img :src=\"imageSrc\" />\n\n <!-- сокращение при одинаковом названии (3.4+), расширяется до :src=\"src\" -->\n <img :src />\n\n <!-- сокращённая запись при динамическом названии атрибута -->\n <button :[key]=\"value\"></button>\n\n <!-- инлайн-выражение с конкатенацией строк -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- привязка классов -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- привязка стилей -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- привязка объекта с атрибутами -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- привязка входного параметра. \"prop\" должен быть объявлен в my-component. -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- передача всех входных параметров родительского компонента в дочерний -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n Модификатор `.prop` также имеет сокращённую запись `.`:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- эквивалент -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n Модификатор `.camel` позволяет приводить имя атрибута `v-bind` в camelCase при использовании DOM-шаблонов, например для атрибута SVG `viewBox`:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n Модификатор `.camel` не нужен, если вы используете строковые шаблоны или предварительно компилируете шаблон на этапе сборки.\n\n- **См. также**\n - [Работа с классами и стилями](https://ru.vuejs.org/guide/essentials/class-and-style.html)\n - [Компоненты - Детали передачи входных параметров](https://ru.vuejs.org/guide/components/props.html#prop-passing-details)\n"
932
+ },
933
+ "references": [
934
+ {
935
+ "name": "en",
936
+ "url": "https://vuejs.org/api/built-in-directives.html#v-bind"
937
+ },
938
+ {
939
+ "name": "zh-cn",
940
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-bind"
941
+ },
942
+ {
943
+ "name": "ja",
944
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-bind"
945
+ },
946
+ {
947
+ "name": "ua",
948
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-bind"
949
+ },
950
+ {
951
+ "name": "fr",
952
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-bind"
953
+ },
954
+ {
955
+ "name": "ko",
956
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-bind"
957
+ },
958
+ {
959
+ "name": "pt",
960
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-bind"
961
+ },
962
+ {
963
+ "name": "bn",
964
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-bind"
965
+ },
966
+ {
967
+ "name": "it",
968
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-bind"
969
+ },
970
+ {
971
+ "name": "cs",
972
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-bind"
973
+ },
974
+ {
975
+ "name": "ru",
976
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-bind"
977
+ },
978
+ {
979
+ "name": "fa",
980
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-bind"
981
+ }
982
+ ]
983
+ },
984
+ {
985
+ "name": "v-model",
986
+ "description": {
987
+ "kind": "markdown",
988
+ "value": "\nСоздает двустороннее связывание с элементом ввода формы или с компонентом.\n\n- **Ожидает:** варьируется в зависимости от элемента формы или работы компонента\n\n- **Использование ограничено**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - компоненты\n\n- **Модификаторы**\n\n - [`.lazy`](https://ru.vuejs.org/guide/essentials/forms.html#lazy) - отслеживание события `change` вместо `input`\n - [`.number`](https://ru.vuejs.org/guide/essentials/forms.html#number) - приведение корректной строки со значением к числу\n - [`.trim`](https://ru.vuejs.org/guide/essentials/forms.html#trim) - удаление пробелов в начале и в конце строки\n\n- **См. также**\n\n - [Работа с формами](https://ru.vuejs.org/guide/essentials/forms.html)\n - [События компонентов - Использование вместе с `v-model`](https://ru.vuejs.org/guide/components/events.html#usage-with-v-model)\n"
989
+ },
990
+ "references": [
991
+ {
992
+ "name": "en",
993
+ "url": "https://vuejs.org/api/built-in-directives.html#v-model"
994
+ },
995
+ {
996
+ "name": "zh-cn",
997
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-model"
998
+ },
999
+ {
1000
+ "name": "ja",
1001
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-model"
1002
+ },
1003
+ {
1004
+ "name": "ua",
1005
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-model"
1006
+ },
1007
+ {
1008
+ "name": "fr",
1009
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-model"
1010
+ },
1011
+ {
1012
+ "name": "ko",
1013
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-model"
1014
+ },
1015
+ {
1016
+ "name": "pt",
1017
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-model"
1018
+ },
1019
+ {
1020
+ "name": "bn",
1021
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-model"
1022
+ },
1023
+ {
1024
+ "name": "it",
1025
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-model"
1026
+ },
1027
+ {
1028
+ "name": "cs",
1029
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-model"
1030
+ },
1031
+ {
1032
+ "name": "ru",
1033
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-model"
1034
+ },
1035
+ {
1036
+ "name": "fa",
1037
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-model"
1038
+ }
1039
+ ]
1040
+ },
1041
+ {
1042
+ "name": "v-slot",
1043
+ "description": {
1044
+ "kind": "markdown",
1045
+ "value": "\nОбозначение именованного слота или слота, который получает входные параметры.\n\n- **Сокращённая запись:** `#`\n\n- **Ожидает:** JavaScript-выражение, допустимое в позиции аргумента функции, включая поддержку деструктуризации. Необязательный - нужен только в том случае, если ожидается передача входного параметра в слот.\n\n- **Аргумент:** название слота (опционально, по умолчанию `default`)\n\n- **Использование ограничено:**\n\n - `<template>`\n - [компонентами](https://ru.vuejs.org/guide/components/slots.html#scoped-slots) (для единственного слота по умолчанию с входными параметрами)\n\n\n- **Пример**\n\n ```html\n <!-- Именованный слот -->\n <BaseLayout>\n <template v-slot:header>\n Содержимое для заголовка\n </template>\n\n <template v-slot:default>\n Содержимое для слота по умолчанию\n </template>\n\n <template v-slot:footer>\n Содержимое для подвала\n </template>\n </BaseLayout>\n\n <!-- Именованный слот с входными параметрами -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- Слот по умолчанию с входными параметрами и деструктуризацией -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **См. также**\n - [Компоненты - Слоты](https://ru.vuejs.org/guide/components/slots.html)\n"
1046
+ },
1047
+ "references": [
1048
+ {
1049
+ "name": "en",
1050
+ "url": "https://vuejs.org/api/built-in-directives.html#v-slot"
1051
+ },
1052
+ {
1053
+ "name": "zh-cn",
1054
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-slot"
1055
+ },
1056
+ {
1057
+ "name": "ja",
1058
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-slot"
1059
+ },
1060
+ {
1061
+ "name": "ua",
1062
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-slot"
1063
+ },
1064
+ {
1065
+ "name": "fr",
1066
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-slot"
1067
+ },
1068
+ {
1069
+ "name": "ko",
1070
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-slot"
1071
+ },
1072
+ {
1073
+ "name": "pt",
1074
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-slot"
1075
+ },
1076
+ {
1077
+ "name": "bn",
1078
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-slot"
1079
+ },
1080
+ {
1081
+ "name": "it",
1082
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-slot"
1083
+ },
1084
+ {
1085
+ "name": "cs",
1086
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-slot"
1087
+ },
1088
+ {
1089
+ "name": "ru",
1090
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-slot"
1091
+ },
1092
+ {
1093
+ "name": "fa",
1094
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-slot"
1095
+ }
1096
+ ]
1097
+ },
1098
+ {
1099
+ "name": "v-pre",
1100
+ "description": {
1101
+ "kind": "markdown",
1102
+ "value": "\nПропускает компиляцию для элемента и всех его потомков.\n\n- **Не ожидает выражения**\n\n- **Подробности**\n\n Внутри элемента с `v-pre` весь синтаксис шаблона Vue будет сохранен и отображён как есть. Наиболее распространённый вариант использования этого элемента - отображение тегов фигурных скобок.\n\n- **Пример**\n\n ```html\n <span v-pre>{{ это не будет скомпилировано }}</span>\n ```\n"
1103
+ },
1104
+ "references": [
1105
+ {
1106
+ "name": "en",
1107
+ "url": "https://vuejs.org/api/built-in-directives.html#v-pre"
1108
+ },
1109
+ {
1110
+ "name": "zh-cn",
1111
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-pre"
1112
+ },
1113
+ {
1114
+ "name": "ja",
1115
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-pre"
1116
+ },
1117
+ {
1118
+ "name": "ua",
1119
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-pre"
1120
+ },
1121
+ {
1122
+ "name": "fr",
1123
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-pre"
1124
+ },
1125
+ {
1126
+ "name": "ko",
1127
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-pre"
1128
+ },
1129
+ {
1130
+ "name": "pt",
1131
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-pre"
1132
+ },
1133
+ {
1134
+ "name": "bn",
1135
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-pre"
1136
+ },
1137
+ {
1138
+ "name": "it",
1139
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-pre"
1140
+ },
1141
+ {
1142
+ "name": "cs",
1143
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-pre"
1144
+ },
1145
+ {
1146
+ "name": "ru",
1147
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-pre"
1148
+ },
1149
+ {
1150
+ "name": "fa",
1151
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-pre"
1152
+ }
1153
+ ]
1154
+ },
1155
+ {
1156
+ "name": "v-once",
1157
+ "description": {
1158
+ "kind": "markdown",
1159
+ "value": "\nОтрисовка элемента и компонента выполняется только один раз, а последующие обновления пропускаются.\n\n- **Не ожидает выражения**\n\n- **Подробности**\n\n При последующих повторных отрисовках этот элемент/компонент и все его дочерние элементы будут рассматриваться как статическое содержимое и пропускаться. Это может быть использовано для оптимизации производительности при обновлении.\n\n ```html\n <!-- элемент -->\n <span v-once>Это значение никогда не изменится: {{msg}}</span>\n <!-- элемент с потомками -->\n <div v-once>\n <h1>Комментарий</h1>\n <p>{{msg}}</p>\n </div>\n <!-- компонент -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- директива `v-for` -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n Начиная с версии 3.2, можно использовать мемоизацию части шаблона, с возможностью указания условий для инвалидации, с помощью директивы [`v-memo`](#v-memo).\n\n- **См. также**\n - [Синтаксис шаблонов - Текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n"
1160
+ },
1161
+ "references": [
1162
+ {
1163
+ "name": "en",
1164
+ "url": "https://vuejs.org/api/built-in-directives.html#v-once"
1165
+ },
1166
+ {
1167
+ "name": "zh-cn",
1168
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-once"
1169
+ },
1170
+ {
1171
+ "name": "ja",
1172
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-once"
1173
+ },
1174
+ {
1175
+ "name": "ua",
1176
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-once"
1177
+ },
1178
+ {
1179
+ "name": "fr",
1180
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-once"
1181
+ },
1182
+ {
1183
+ "name": "ko",
1184
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-once"
1185
+ },
1186
+ {
1187
+ "name": "pt",
1188
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-once"
1189
+ },
1190
+ {
1191
+ "name": "bn",
1192
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-once"
1193
+ },
1194
+ {
1195
+ "name": "it",
1196
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-once"
1197
+ },
1198
+ {
1199
+ "name": "cs",
1200
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-once"
1201
+ },
1202
+ {
1203
+ "name": "ru",
1204
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-once"
1205
+ },
1206
+ {
1207
+ "name": "fa",
1208
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-once"
1209
+ }
1210
+ ]
1211
+ },
1212
+ {
1213
+ "name": "v-memo",
1214
+ "description": {
1215
+ "kind": "markdown",
1216
+ "value": "\n- **Ожидает:** `any[]`\n\n- **Подробности**\n\n Мемоизация части поддерева шаблона. Может использоваться как для элементов, так и для компонентов. Директива ожидает массив фиксированной длины зависимых значений, которые станут использоваться для сравнения при мемоизации. Если каждое значение массива осталось таким же, как при последней отрисовке, то обновление всего поддерева будет пропущено. Например:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n При повторном рендеринге компонента, если `valueA` и `valueB` остались прежними, все обновления для этого `<div>` и его дочерних элементов будут пропущены. Фактически, будет пропущено даже создание VNode виртуального DOM, поскольку мемоизированная копия поддерева может быть использована повторно.\n\n Важно правильно указать массив мемоизации, иначе мы можем пропустить обновления, которые действительно должны быть применены. `v-memo` с пустым массивом зависимостей (`v-memo=\"[]\"`) будет функционально эквивалентен `v-once`.\n\n **Использование вместе с `v-for`**\n\n `v-memo` предоставляется исключительно для микрооптимизации в критичных к производительности сценариях и может понадобиться крайне редко. Наиболее распространённым случаем, когда это может оказаться полезным, является отрисовка больших списков `v-for` (когда `length > 1000`):\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - выбран: {{ item.id === selected }}</p>\n <p>...больше дочерних элементов</p>\n </div>\n ```\n\n При изменении состояния компонента `selected` будет создано большое количество VNodes, даже если большинство элементов остались прежними. Использование `v-memo` здесь, по сути, говорит: \"обновляйте этот элемент только в том случае, если он перешел из состояния `не выбран` в состояние `выбран`, или наоборот\". Это позволяет каждому незатронутому элементу повторно использовать свой предыдущий VNode и полностью пропустить операцию сравнения. Обратите внимание, что нам не нужно включать `item.id` в массив зависимостей memo, поскольку Vue автоматически определяет его из `:key` элемента.\n\n :::warning Предупреждение\n При использовании `v-memo` с `v-for` убедитесь, что они используются на одном и том же элементе. **`v-memo` не работает внутри `v-for`.**.\n :::\n\n `v-memo` также может быть использовано для компонентов, чтобы вручную предотвратить нежелательные обновления в некоторых крайних случаях, когда проверка обновлений дочерних компонентов была де-оптимизирована. Но, повторимся, ответственность за корректное указание массивов зависимостей во избежание пропуска необходимых обновлений лежит на разработчике.\n\n- **См. также**\n - [v-once](#v-once)\n"
1217
+ },
1218
+ "references": [
1219
+ {
1220
+ "name": "en",
1221
+ "url": "https://vuejs.org/api/built-in-directives.html#v-memo"
1222
+ },
1223
+ {
1224
+ "name": "zh-cn",
1225
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-memo"
1226
+ },
1227
+ {
1228
+ "name": "ja",
1229
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-memo"
1230
+ },
1231
+ {
1232
+ "name": "ua",
1233
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-memo"
1234
+ },
1235
+ {
1236
+ "name": "fr",
1237
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-memo"
1238
+ },
1239
+ {
1240
+ "name": "ko",
1241
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-memo"
1242
+ },
1243
+ {
1244
+ "name": "pt",
1245
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-memo"
1246
+ },
1247
+ {
1248
+ "name": "bn",
1249
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-memo"
1250
+ },
1251
+ {
1252
+ "name": "it",
1253
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-memo"
1254
+ },
1255
+ {
1256
+ "name": "cs",
1257
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-memo"
1258
+ },
1259
+ {
1260
+ "name": "ru",
1261
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-memo"
1262
+ },
1263
+ {
1264
+ "name": "fa",
1265
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-memo"
1266
+ }
1267
+ ]
1268
+ },
1269
+ {
1270
+ "name": "v-cloak",
1271
+ "description": {
1272
+ "kind": "markdown",
1273
+ "value": "\nИспользуется для скрытия еще нескомпилированного шаблона до тех пор, пока он не будет готов.\n\n- **Не ожидает выражения**\n\n- **Подробности**\n\n **Данная директива нужна только для окружения без этапа сборки.**\n\n При использовании DOM шаблонов может возникнуть \"вспышка некомпилированных шаблонов\": пользователь может видеть необработанные теги фигурных скобок, пока монтируемый компонент не заменит их отрисованным содержимым.\n\n `v-cloak` будет оставаться на элементе до тех пор, пока не будет смонтирован связанный с ним экземпляр компонента. В сочетании с правилами CSS, такими как `[v-cloak] { display: none }`, это может быть использовано для скрытия необработанных шаблонов до тех пор, пока компонент не будет готов.\n\n- **Пример**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n До завершения компиляции `<div>` не будет виден.\n"
1274
+ },
1275
+ "references": [
1276
+ {
1277
+ "name": "en",
1278
+ "url": "https://vuejs.org/api/built-in-directives.html#v-cloak"
1279
+ },
1280
+ {
1281
+ "name": "zh-cn",
1282
+ "url": "https://cn.vuejs.org/api/built-in-directives.html#v-cloak"
1283
+ },
1284
+ {
1285
+ "name": "ja",
1286
+ "url": "https://ja.vuejs.org/api/built-in-directives.html#v-cloak"
1287
+ },
1288
+ {
1289
+ "name": "ua",
1290
+ "url": "https://ua.vuejs.org/api/built-in-directives.html#v-cloak"
1291
+ },
1292
+ {
1293
+ "name": "fr",
1294
+ "url": "https://fr.vuejs.org/api/built-in-directives.html#v-cloak"
1295
+ },
1296
+ {
1297
+ "name": "ko",
1298
+ "url": "https://ko.vuejs.org/api/built-in-directives.html#v-cloak"
1299
+ },
1300
+ {
1301
+ "name": "pt",
1302
+ "url": "https://pt.vuejs.org/api/built-in-directives.html#v-cloak"
1303
+ },
1304
+ {
1305
+ "name": "bn",
1306
+ "url": "https://bn.vuejs.org/api/built-in-directives.html#v-cloak"
1307
+ },
1308
+ {
1309
+ "name": "it",
1310
+ "url": "https://it.vuejs.org/api/built-in-directives.html#v-cloak"
1311
+ },
1312
+ {
1313
+ "name": "cs",
1314
+ "url": "https://cs.vuejs.org/api/built-in-directives.html#v-cloak"
1315
+ },
1316
+ {
1317
+ "name": "ru",
1318
+ "url": "https://ru.vuejs.org/api/built-in-directives.html#v-cloak"
1319
+ },
1320
+ {
1321
+ "name": "fa",
1322
+ "url": "https://fa.vuejs.org/api/built-in-directives.html#v-cloak"
1323
+ }
1324
+ ]
1325
+ },
1326
+ {
1327
+ "name": "key",
1328
+ "description": {
1329
+ "kind": "markdown",
1330
+ "value": "\n Специальный атрибут `key` (ключ) в первую очередь используется как подсказка для алгоритма виртуального DOM Vue для идентификации VNodes (виртуальных узлов) при вычислении разницы между обновленным списком узлов и старым.\n\n- **Ожидает** `number | string | symbol`\n\n- **Подробности**\n\n Без ключей Vue использует алгоритм, который минимизирует перемещение элементов и пытается изменять/переиспользовать элементы одного типа как можно больше. При использовании ключей Vue переупорядочивает элементы на основании изменения ключей, а элементы с ключами, которые уже отсутствуют, будут всегда удаляться/уничтожаться. \n\n Потомки одного и того же общего родителя должны иметь **уникальные ключи**. Дубликаты ключей будут приводить к ошибкам рендера.\n\n Чаще всего используется в сочетании с `v-for`:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n Также может использоваться для принудительной замены элемент/компонента вместо его переиспользования. Это может пригодиться, если вы хотите:\n\n - Корректно вызвать хуки жизненного цикла компонента\n - Запускать анимации перехода\n\n Например:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n При изменении значения `text`, элемент `<span>` будет всегда заменяться, вместо обновления его содержимого, поэтому будет запускаться анимация перехода.\n\n- **См. также** [Руководство — Рендер списка - Сохранение состояния с помощью `key`](https://ru.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n"
1331
+ },
1332
+ "references": [
1333
+ {
1334
+ "name": "en",
1335
+ "url": "https://vuejs.org/api/built-in-special-attributes.html#key"
1336
+ },
1337
+ {
1338
+ "name": "zh-cn",
1339
+ "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#key"
1340
+ },
1341
+ {
1342
+ "name": "ja",
1343
+ "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#key"
1344
+ },
1345
+ {
1346
+ "name": "ua",
1347
+ "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#key"
1348
+ },
1349
+ {
1350
+ "name": "fr",
1351
+ "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#key"
1352
+ },
1353
+ {
1354
+ "name": "ko",
1355
+ "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#key"
1356
+ },
1357
+ {
1358
+ "name": "pt",
1359
+ "url": "https://pt.vuejs.org/api/built-in-special-attributes.html#key"
1360
+ },
1361
+ {
1362
+ "name": "bn",
1363
+ "url": "https://bn.vuejs.org/api/built-in-special-attributes.html#key"
1364
+ },
1365
+ {
1366
+ "name": "it",
1367
+ "url": "https://it.vuejs.org/api/built-in-special-attributes.html#key"
1368
+ },
1369
+ {
1370
+ "name": "cs",
1371
+ "url": "https://cs.vuejs.org/api/built-in-special-attributes.html#key"
1372
+ },
1373
+ {
1374
+ "name": "ru",
1375
+ "url": "https://ru.vuejs.org/api/built-in-special-attributes.html#key"
1376
+ },
1377
+ {
1378
+ "name": "fa",
1379
+ "url": "https://fa.vuejs.org/api/built-in-special-attributes.html#key"
1380
+ }
1381
+ ]
1382
+ },
1383
+ {
1384
+ "name": "ref",
1385
+ "description": {
1386
+ "kind": "markdown",
1387
+ "value": "\nОзначает [ссылку на элементы шаблона](https://ru.vuejs.org/guide/essentials/template-refs.html).\n\n- **Ожидает** `string | Function`\n\n- **Подробности**\n\n Атрибут `ref` используется для регистрации ссылки на элемент или дочерний компонент.\n\n В Options API, ссылка будет зарегистрирована в объекте компонента `this.$refs`:\n\n ```html\n <!-- Хранится в this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n В Composition API, ссылка будет храниться в ref с соответствующим именем:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">Привет</p>\n </template>\n ```\n\n При использовании на обычном DOM-элементе ссылка будет указывать на этот элемент; при использовании на дочернем компоненте ссылка будет указывать на экземпляр дочернего компонента.\n\n В качестве альтернативы `ref` может принимать функцию, что даёт полный контроль над тем, где хранить ссылку:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n Важное замечание о времени регистрации ref-ссылок: поскольку эти ссылки создаются render-функцией, нужно подождать, пока компонент будет смонтирован, прежде чем обращаться к ним.\n\n Так же свойство `this.$refs` не реактивно, поэтому не следует использовать его в шаблонах для привязки данных.\n\n- **См. также**\n - [Руководство — Ссылки на элементы шаблона](https://ru.vuejs.org/guide/essentials/template-refs.html)\n - [Guide - Typing Template Refs](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [Guide - Typing Component Template Refs](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n"
1388
+ },
1389
+ "references": [
1390
+ {
1391
+ "name": "en",
1392
+ "url": "https://vuejs.org/api/built-in-special-attributes.html#ref"
1393
+ },
1394
+ {
1395
+ "name": "zh-cn",
1396
+ "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#ref"
1397
+ },
1398
+ {
1399
+ "name": "ja",
1400
+ "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#ref"
1401
+ },
1402
+ {
1403
+ "name": "ua",
1404
+ "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#ref"
1405
+ },
1406
+ {
1407
+ "name": "fr",
1408
+ "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#ref"
1409
+ },
1410
+ {
1411
+ "name": "ko",
1412
+ "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#ref"
1413
+ },
1414
+ {
1415
+ "name": "pt",
1416
+ "url": "https://pt.vuejs.org/api/built-in-special-attributes.html#ref"
1417
+ },
1418
+ {
1419
+ "name": "bn",
1420
+ "url": "https://bn.vuejs.org/api/built-in-special-attributes.html#ref"
1421
+ },
1422
+ {
1423
+ "name": "it",
1424
+ "url": "https://it.vuejs.org/api/built-in-special-attributes.html#ref"
1425
+ },
1426
+ {
1427
+ "name": "cs",
1428
+ "url": "https://cs.vuejs.org/api/built-in-special-attributes.html#ref"
1429
+ },
1430
+ {
1431
+ "name": "ru",
1432
+ "url": "https://ru.vuejs.org/api/built-in-special-attributes.html#ref"
1433
+ },
1434
+ {
1435
+ "name": "fa",
1436
+ "url": "https://fa.vuejs.org/api/built-in-special-attributes.html#ref"
1437
+ }
1438
+ ]
1439
+ },
1440
+ {
1441
+ "name": "is",
1442
+ "description": {
1443
+ "kind": "markdown",
1444
+ "value": "\nИспользуется для [динамических компонентов](https://ru.vuejs.org/guide/essentials/component-basics.html#dynamic-components).\n\n- **Ожидает** `string | Component`\n\n- **Использование на нативных элементах** <sup class=\"vt-badge\">3.1+</sup>\n\n Когда атрибут `is` используется на нативном HTML-элементе, то он интерпретируется как [пользовательский встроенный элемент](https://html.spec.whatwg.org/multipage/custom-elements#custom-elements-customized-builtin-example). Это нативная возможность веб-платформы.\n\n Однако есть случай использования, когда может понадобиться, чтобы Vue заменил нативный элемент на компонент Vue, как это разъясняется в [Особенности парсинга DOM-шаблона](https://ru.vuejs.org/guide/essentials/component-basics.html#dom-template-parsing-caveats). В таком случае можно добавить значению атрибута `is` префикс `vue:`, чтобы Vue вместо элемента отрисовал компонент Vue:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **См. также**\n\n - [Специальные встроенные элементы - `<component>`](https://ru.vuejs.org/api/built-in-special-elements.html#component)\n - [Динамические компоненты](https://ru.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n"
1445
+ },
1446
+ "references": [
1447
+ {
1448
+ "name": "en",
1449
+ "url": "https://vuejs.org/api/built-in-special-attributes.html#is"
1450
+ },
1451
+ {
1452
+ "name": "zh-cn",
1453
+ "url": "https://cn.vuejs.org/api/built-in-special-attributes.html#is"
1454
+ },
1455
+ {
1456
+ "name": "ja",
1457
+ "url": "https://ja.vuejs.org/api/built-in-special-attributes.html#is"
1458
+ },
1459
+ {
1460
+ "name": "ua",
1461
+ "url": "https://ua.vuejs.org/api/built-in-special-attributes.html#is"
1462
+ },
1463
+ {
1464
+ "name": "fr",
1465
+ "url": "https://fr.vuejs.org/api/built-in-special-attributes.html#is"
1466
+ },
1467
+ {
1468
+ "name": "ko",
1469
+ "url": "https://ko.vuejs.org/api/built-in-special-attributes.html#is"
1470
+ },
1471
+ {
1472
+ "name": "pt",
1473
+ "url": "https://pt.vuejs.org/api/built-in-special-attributes.html#is"
1474
+ },
1475
+ {
1476
+ "name": "bn",
1477
+ "url": "https://bn.vuejs.org/api/built-in-special-attributes.html#is"
1478
+ },
1479
+ {
1480
+ "name": "it",
1481
+ "url": "https://it.vuejs.org/api/built-in-special-attributes.html#is"
1482
+ },
1483
+ {
1484
+ "name": "cs",
1485
+ "url": "https://cs.vuejs.org/api/built-in-special-attributes.html#is"
1486
+ },
1487
+ {
1488
+ "name": "ru",
1489
+ "url": "https://ru.vuejs.org/api/built-in-special-attributes.html#is"
1490
+ },
1491
+ {
1492
+ "name": "fa",
1493
+ "url": "https://fa.vuejs.org/api/built-in-special-attributes.html#is"
1494
+ }
1495
+ ]
1496
+ }
1497
+ ]
1498
+ }