Vue 2 podstawy
W tutorialu pokażę jak rozpocząć swoję przygodę z frameworkiem javascriptowym Vue. Vue jest jednym z frameworków javascriptowych. Nie jest tak popularny jak Angular czy React ale stopniowo zyskuje coraz większą popularność. Dzięki swojej prostocie i wszechstronności wzbudza ogromne zainteresowanie twórców aplikacji www. Służy do budowy efektywnych, reaktywnych, złożonych i skalowalnych aplikacji, przy czym pozwala na korzystanie z komponentów wielokrotnego użytku.
<!-- dla strony developerskiej --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- dla produkcyjnej zalecane jest linkowanie do konkretnej wersji --> <script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>Na początek stwórzymy prosty plik html.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="vue-app">
{{ message }}
</div>
<script src="app.js"></script>
</body>
</html>
oraz plik app.js:
var app = new Vue({
el: '#vue-app',
data: {
message: 'Hello World!'
}
});
Omówię teraz działanie kodu pokrótce. W pliku html wewnątrz tagu o id vue-app umieszczony jest zapis
{{ message }}.
W pliku javascript tworzymy nową instancję obiektu Vue. W atrybucie el
określamy element, w którym html będzie przetwarzany przez Vue. W atrybucie data
podaliśmy treść zmiennej message, której wartość wyświetlamy w htmlu.
Stworzyliśmy właśnie pierwszą aplikację w Vue :).
Jeśli chcemy przypisać jakąś wartość do atrybutu (w tym przypadku title) należy użyć poniższego zapisu.
<div id="vue-app"> <span v-bind:title="message"> teskt </span> </div>Można użyć również wersji skróconej v-bind.
<div id="vue-app"> <span :title="message"> tekst </span> </div>Napiszemy prostą metodę w Vue. Metodami są funkcje umieszczone w property methods.
var app = new Vue({
el: '#vue-app',
data: {
message: 'Hello World!'
},
methods: {
greet: function () {
return 'Hi ' + this.message;
}
}
});
Na powyższym listingu napisaliśmy metodę greet(). Aby ją wywołać w html wystarczy napisać:
<div id="vue-app">
<h1>{{ greet() }}</h1>
</div>
Jak się pewnie domyślasz wewnątrz tagu h1 zostanie wypisany tekst "Hi Hello World!".
Zróbmy jeszcze jeden przykład z inną metodą oraz zobaczmy jak działa wiązanie danych za pomocą v-model.
Jak widać dodaliśmy kolejną zmienną counter z domyślną wartością 0 oraz metodę add, która zwiększa po prostu ten licznik o podaną wartość.
var app = new Vue({
el: '#vue-app',
data: {
message: 'Hello Vue!',
counter: 0
},
methods: {
greet: function () {
return 'Good Morning '+this.name;
},
add: function (inc) {
this.counter += inc;
}
}
});
Wypiszmy wartość licznika w html. Ponadto zauważ, że wiążemy za pomocą v-model zmienną counter z inputem tekstowym. Ponadto umieściliśmy button, który po kliknięciu doda wartość 10 do licznika (odpowiada za to
modyfikator @click, można też użyć zapisu v-on:click).
Zdarzy się to tylko raz, dlatego że mamy dopisany do click modyfikator .once.
Więcej na ten temat w dokumentacji eventów vue.
<div id="vue-app">
<h1>{{ greet() }}</h1>
{{ message }}
<br>
<input type="text" v-model="counter">
<br>Counter: {{ counter }}
<br>
<button @click.once="add(10)">+</button>
</div>
