В прошлой записи мы разобрались с установкой всего необходимого для того, чтобы начать работать с vue.js. В этой записи мы напишем простое приложение, кнопку, при нажатии на которую будет меняться цвет фона родительского блока.
See the Pen Style HTML dropdown by Aleksandrs (@CoolS2) on CodePen.
С чего начать
Открываем файл src/App.vue
Это наш основной файл, в данном случае единственный в котором и будет все наше приложение.
Компонент делиться на 3 части:
- template
- script
- style
Основные части Vue.js
Внутри template будет наш HTML и привязка событий к методу
<template>
<div id="app">
<div class="bg-color" :style="{ backgroundColor: backgroundColor}">
<button @click="changeColor()">Change color</button>
</div>
</div>
</template>
Внутри тэга template мы задали основной блок с айди #app, дальше идет основная логика. Блок div с классом bg-color, а так же мы задаем данные, которые заготавливаем заранее. Вместо переменной backgroundColor, будет вставляться цвет фона, который мы будем менять при нажатии на кнопку.
Дальше идет сама кнопка и привязываем событие onclick (@click) и название метода changeColor()
Важно!
Внутри тэга template, должен быть основной блок, в котором будет прописан весь html, т.е так работать не будет!
<template> <!-- Так работать не будет! -->
<div>Hello world</div>
<div>Hello world</div>
</template>
Во второй части мы прописываем js логику. Она состоит из следующих частей:
- name — Уникальное название компонента
- data — Данные, которые могут использоваться внутри html
- computed — вычисляемые данные. К примеру, мы по нажатии на кнопку запускаем метод, который меняет цвет в data, computed свойство мгновенно подхватывает эти данные. Как вы уже догадались, в html у нас и есть название функции вычисляемого свойства, которое будет меняться при изменении data bgColor.
- methods — Методы, в данном примере генерирует рандомный цвет.
<script>
export default {
name: 'app',
data() {
return {
bgColor: '#fff',
}
},
computed: {
backgroundColor() {
return this.bgColor;
}
},
methods: {
changeColor() {
this.bgColor = this.getRandomColor();
},
getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
}
}
</script>
И конечно же стили, думаю тут можно пока что обойтись без комментариев.
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
.bg-color{
width: 200px;
height: 200px;
margin: 0 auto;
border: 1px solid #ccc;
}
.bg-color button{
margin-top: 85px;
padding: 5px 10px;
border-color: transparent;
background: #eee;
}
</style>
После того как код написан, нужно все это дело скомпилировать.
Если вы пользуетесь PHPStorm, то можно открыть файл package.json и запустить скрипт:
"build": "vue-cli-service build",
Либо внутри консоли написать команду build.
В итоге у нас появиться папка dist, в которой будет следующая структура
- —css
- —js
- -index.html
Если открыть index.html в браузере, то мы увидим все наши труды. В следующей записи поговорим про вложенные и наследуемые компоненты.
Пишется «скомпИлировать».