index.md (#25059)
* index.md Components translated * index.md updated added localeTitle
This commit is contained in:
82
guide/russian/vue/components/index.md
Normal file
82
guide/russian/vue/components/index.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
title: Components
|
||||||
|
localeTitle: Компоненты
|
||||||
|
---
|
||||||
|
|
||||||
|
## Компоненты
|
||||||
|
|
||||||
|
Классическая проблема веб девелоперов - работа с HTML дупликатами, но не как в
|
||||||
|
простом примере со списком, иногда тебе просто нужно импортировать один и тот же
|
||||||
|
код в разные места. Vue.js дает вам эту возможность благодаря компонентам.
|
||||||
|
|
||||||
|
Представим вы разрабатываете landing page для продукта вашей компании и вам нужно
|
||||||
|
отобразить 4 его главных приемущества в одинаковом стиле, например карточек, с иконкой,
|
||||||
|
заголовком и небольшим описанием.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
Vue.component('feature-card', {
|
||||||
|
props: ["iconSrc", "iconAltText", "featureTitle", "featureDescription"],
|
||||||
|
template: `
|
||||||
|
<div class="card">
|
||||||
|
<div class="icon-wrapper">
|
||||||
|
<img
|
||||||
|
class="icon"
|
||||||
|
:src="iconSrc"
|
||||||
|
:alt="iconAltText">
|
||||||
|
</div>
|
||||||
|
<h4 class="title">
|
||||||
|
{{ featureTitle }}
|
||||||
|
</h4>
|
||||||
|
<p class="description">
|
||||||
|
{{ featureDescription }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
> Заметьте что мы использовали синтаксис ':src' для атрибута 'src'.
|
||||||
|
Это ничего не меняет, это просто сахар и означает он следующее 'v-bind:src' --
|
||||||
|
когда вы ходите забиндить атрибут к переменной вы можете заменить 'v-bind:' на ':'
|
||||||
|
|
||||||
|
В этом снипете мы сделали много нового:
|
||||||
|
* мы создали новый компонент с названием 'feature-card'
|
||||||
|
* мы определили основную **структуру** компонента 'feature-card' с помощью атрибута 'template'
|
||||||
|
* мы описали список свойств которые примет компонент из списка 'props'
|
||||||
|
|
||||||
|
Так как мы определили имя компонента, как только мы захотим использовать его еще раз,
|
||||||
|
мы можем ссылаться на него используя его тэг. В нашем примере мы можем использовать тэг '<feature-card>':
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div id="app">
|
||||||
|
<feature-card
|
||||||
|
iconSrc="https://freedesignfile.com/upload/2017/08/rocket-icon-vector.png"
|
||||||
|
iconAltText="rocket"
|
||||||
|
featureTitle="Processing speed"
|
||||||
|
featureDescription="Our solution has astonishing benchmarks grades">
|
||||||
|
</feature-card>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
В этом случае, мы вызвали '<feature-card>', как будто такой тэг существует,
|
||||||
|
установили 'iconSrc' и 'featureTitle' как будто это валидные атрибуты.
|
||||||
|
Предназначение Vue.js компонентов: дать вам возможность писать свои инструменты.
|
||||||
|
|
||||||
|
### Входные параменты или Props
|
||||||
|
|
||||||
|
Входные параметры это кастомные атрибуты, которые вы можете зарегистрировать в компоненте. Когда значение передается во входной параметр, он становится свойством в этом компоненте. Чтобы передать заголовок в пост нашего блога, мы можем включить его в лист входных параметров, которые принемает этот компонент, используя действие 'props':
|
||||||
|
|
||||||
|
```js
|
||||||
|
Vue.component('feature-card', {
|
||||||
|
props: ['title'],
|
||||||
|
template: '<h3>{{ title }}</h3>'
|
||||||
|
})
|
||||||
|
```
|
||||||
|
Компонент может иметь сколько угодно входных параментов, любое значение может быть передано в любой входной параметр. В шаблоне выше, вы можете увидеть как мы может получить доступ к этим значениям, точно так же как и с 'data'.
|
||||||
|
|
||||||
|
Как только входной параметр зарегестрирован, вы можете передавать в него данные используя кастомный атрибут, вот так:
|
||||||
|
```html
|
||||||
|
<blog-post title="My journey with Vue"></blog-post>
|
||||||
|
<blog-post title="Blogging with Vue"></blog-post>
|
||||||
|
<blog-post title="Why Vue is so fun"></blog-post>
|
||||||
|
```
|
Reference in New Issue
Block a user