feat: add article for Vue.js Components
Signed-off-by: João Daniel <jotaf.daniel@gmail.com>
This commit is contained in:
committed by
Stuart Taylor
parent
dc424f8676
commit
e9713ceb77
68
client/src/pages/guide/english/vue/components/index.md
Normal file
68
client/src/pages/guide/english/vue/components/index.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
title: Components
|
||||||
|
---
|
||||||
|
|
||||||
|
## Components
|
||||||
|
|
||||||
|
A classic problem that web developers face when working is HTML duplication, not
|
||||||
|
in a simple example such as a list, but sometimes all you want is a "import" to
|
||||||
|
be able to use the same code in several different places. Well, Vue.js gives you
|
||||||
|
this feature with Components.
|
||||||
|
|
||||||
|
Suppose you're developing a landing page for your company's product and you need
|
||||||
|
to display the 4 main features of it following the same structure of a card-like
|
||||||
|
object, with a icon, a title and a short description.
|
||||||
|
|
||||||
|
```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>
|
||||||
|
`
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
> Note that here we binded the image `src` attribute with another syntax `:src`.
|
||||||
|
This changes nothing, it is simply a syntax sugar to `v-bind:src` -- whenever
|
||||||
|
you want to bind some attribute to a variable, you can prepend a `:` to the
|
||||||
|
attribute name instead of using the full form `v-bind`.
|
||||||
|
|
||||||
|
With this code, we did a lot of new things:
|
||||||
|
* we created a new component called `feature-card`
|
||||||
|
* we defined `feature-card` default **structure** with the `template` attribute
|
||||||
|
* we opened a list of properties that that component accept with the `props`
|
||||||
|
list
|
||||||
|
|
||||||
|
When we defined the name of the components, whenever we desire to reuse it, we
|
||||||
|
can just reference it by using as a tag. In our example, we can use the tag
|
||||||
|
`<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>
|
||||||
|
```
|
||||||
|
|
||||||
|
In this case, we called the `<feature-card>` as it was an existing tag, as well
|
||||||
|
as we setted `iconSrc` or `featureTitle` as they were valid attributes. And the
|
||||||
|
purpose of Vue.js components is this: increment your toolbox with your own
|
||||||
|
tools.
|
||||||
|
|
Reference in New Issue
Block a user