od Podstaw
7 godz. 6 min · Vue.js · Full-stack i Programowanie
Piotr PalarzWeb DeveloperAby zacząć korzystać z Vue, wystarczy dodać do strony jeden element <script> i zacząć rozszerzać HTML o nowe możliwości prezentacji danych, które w całości kontrolujemy z poziomu kodu JavaScript. Najlepsze jest jednak to, że gdy dane się zmienią, Vue odzwierciedli wszystkie zmiany na stronie. Koniec zatem z odwoływaniem się z poziomu kodu JavaScript do elementów z drzewa DOM i "ręczną" ich manipulacją!Czy łatwość użycia Vue oznacza, że jest to framework prosty i nienadający się do budowania ambitnych aplikacji internetowych? Absolutnie nie! Jeżeli potrafisz korzystać z workflow opartego na webpacku, znasz nową składnię ES6 i chcesz swoje projekty dzielić na wiele uporządkowanych plików - możesz w ten sposób pracować. Jeśli jednak przy innych frameworkach przytłoczyły Cię wszystkie dodatkowe narzędzia i nie potrafiłeś się skupić na najważniejszym, czyli poznawaniu frameworka, to tutaj tego problemu nie doświadczysz.
W kursie tym krok po kroku poznasz ten lekki, acz potężny framework. Zaczniemy od instalcji i obowiązkowego projektu "Hello World!". Dowiesz się czym jest "Virtual DOM" i dlaczego Vue z niego korzysta. Następnie zobaczysz jak kontrolować wybraną część strony internetowej za pomocą metod, właściwości i dynamicznych atrybutów. Aby zrozumieć reaktywność Vue, przyjrzymy się konstrukcjom języka JavaScript, które ją umożliwiają.
Aby aplikacja mogła być interaktywna, nie może być obojętna na działania użytkownika. Z tego powodu zobaczysz, jak przypisywać obsługę zdarzeń, takich jak np. kliknięcie, jak do funkcji przekazywać parametry oraz jak korzystać z natywnego obiektu Event. Nie zabraknie również informacji o tym, jak modyfikować obsługę zdarzeń tak, by np. przechwycić jednoczesne wciśnięcie wybranej kombinacji klawiszy.Jak się przekonasz, dyrektywy Vue pozwolą Ci na manipulację nie tylko zachowaniem, ale i wyglądem elementów HTML. Omówimy dokładnie jak kontrolować przypisywane klasy CSS, a także liniowe style. Wszystko to oczywiście na praktycznych przykładach! Poznasz również sposoby warunkowego wyświetlania elementów, a także iteracji. Już na tym etapie będziesz gotowy do stworzenia swojego pierwszego, praktycznego projektu. Będzie do Counter, a zatem licznik odliczający od 10 do 0. Jeśli kiedykolwiek korzystałeś z biblioteki jQuery, zobaczysz totalnie inne podejście - proste i czytelne.
W jednym z rozdziałów kursu omówimy dokładnie techniki pracy z formularzami. Zobaczysz jak przechwytywać wpisywane przez użytkownika dane, na wszystkich rodzajach pól, jakie oferuje język HTML. Abyś wszystko jak najlepiej zrozumiał, spróbujemy wspólnie zaimplementować tzw. dwukierunkowe wiązanie danych, które Vue oferuje za pomocą jednej dyrektywy.Z kursu dowiesz się także czym są oraz jak tworzyć własne filtry, jak odwoływać się do elementów z drzewa DOM, gdy jest to konieczne, a także co oferują nam własne dyrektywy.
Jedną z największych zalet frameworka Vue.js jest możliwość tworzenia komponentów. Są to własne elementy HTML, które możemy umieszczać w wybranych miejscach naszej aplikacji. Element taki to jednak nie tylko wygląd, który definiujemy za pomocą szablonu, ale także (a może i przede wszystkim) logika, kontrolowana z poziomu kodu JavaScript.Zobaczysz jak zarejestrować własny komponent lokalnie oraz globalnie, jak sprawić, aby był reużywalny, przyjmując różne dane oraz jak komunikować się pomiędzy komponentami, by aplikacja pozostawała w synchronizacji. W tym celu omówimy dwa kierunki komunikacji, najpierw rodzic-dziecko, a później dziecko-rodzic. Na tym etapie wykonamy bardzo ciekawy, praktyczny projekt. Będzie to tabela napędzana danymi. Każdy wiesz tabeli prezentował będzie dane jednej osoby, a kliknięcie ikony kosza pozwoli na jej usunięcie. Ikona edycji zaś, zamieni wiesz w pola input, za pomocą których zaktualizujemy dane. W projekcie tym wykorzystamy niemal całą wcześniej zdobytą wiedzę!
Vue.js oferuje możliwość animowania elementów, kiedy są one pokazywane lub ukrywane. I omówienia tego tematu nie mogło również zabraknąć w tym kursie. Poznasz sposoby na animowanie elementów w użyciem CSS, zobaczysz jak animować podmianę jednego komponentu na drugi, a także jak uzyskać taki efekt dla listy elementów. Mając już wiedzę z zakresu tworzenia własnych komponentów, stworzymy wspólnie element, który pozwoli na animację innych, zawartych w nim elementów. W tym celu zintegrujemy nasz komponent z biblioteką animate.css.
Przez większą część kursu pracować będziemy pisząc kod JavaScript w standardzie ES5, a więc tym najpopularniejszym. Nie będziemy również korzystać z żadnych skomplikowanych narzędzi. Wszystko to po to, abyś mógł jak najlepiej zrozumieć sedno Vue.js, a nie zastanawiać się, który zapis jest specyficzny dla tego frameworka, a który to część nowego standardu JavaScript lub syntactic sugar dodany przez narzędzie uruchamiane z poziomu terminala.Nie oznacza to jednak, że z Vue nie da się pracować w sposób nowoczesny! Oczywiście jest taka możliwość i doskonale się o tym przekonasz. W jednym z rozdziałów kursu omówimy narzędzie vue-cli, które pozwoli nam przygotować startowy projekt nowej aplikacji, a także środowisko skonfigurowane z użyciem webpack'a, które umożliwi nam wydajną pracę. Na tym etapie zobaczysz, że komponentu Vue można tworzyć w zupełnie oddzielnych plikach z rozszerzeniem .vue, gdzie umieścimy zarówno szablon jak i logikę komponentu, a także (opcjonalnie) jego style CSS.Kurs ten zwieńczymy stworzeniem nowoczesnej aplikacji, wykorzystując najnowszy zapis ES6 i workflow stworzony z użyciem vue-cli. Projektem tym będzie Slideshow, a więc galeria zdjęć. Stworzymy od podstaw kilka komponentów, dodamy własny preloader obrazów, a także możliwość pobierania listy obrazów z serwera. Do tego celu wykorzystamy popularną bibliotekę axios, która umożliwia łatwe wykonywanie zapytań HTTP. Pod koniec dodamy do naszej aplikacji również routing, aby na pasku adresu odzwierciedlać aktualnie wyświetlany obraz, a także umożliwić nawigację za pomocą przycisków "Wstecz" i "Do przodu" dostępnych w przeglądarce internetowej. To zadanie ułatwi nam bardzo popularny plugin dla Vue, który nazywa się vue-router. Zobaczysz jak go zainstalować, a także skonfigurować. Następnie omówimy dynamiczne parametry, które odczytamy w komponencie. Finalnie zaktualizujemy adres URL z poziomu kodu JavaScript.Ostatnim krokiem jaki wykonamy, będzie stworzenie builda produkcyjnego naszej aplikacji, który gotowy będzie do na stronę internetową.
Kurs ten jest dla wszystkich osób, które znają już język JavaScript i sposoby na pracę z Obiektowym Modelem Dokumentu. Aby go rozpocząć, nie jest wymagana znajomość innych frameworków, ale taka wiedza na pewno nie zaszkodzi, a pomoże lepiej zrozumieć te zagadnienia, które są dla nich wspólne. Nie jest również wymagana wiedza z zakresu EcmaScript 6 czy webpack'a, lecz na pewno będzie pomocna w ostatim rozdziale tego kursu. Nieważne zatem czy Vue.js będzie pierwszym frameworkiem, który poznasz, czy będzie to odskocznia od React'a czy Angulara - na pewno to narzędzie Cię zaskoczy!
Vue.js 2.5.x
Nie wiem czy znasz bibliotekę animate.css, ale generalnie jest to zwykły
plik napisany w CSS, nie ma tutaj żadnej magii JavaScript'owej i tutaj
są zdefiniowane animacje z użyciem CSS Key Frames i okazuje się,
że Vue również sobie z nimi radzi, bo ja ci pokazywałem że, jeżeli ustawimy transition
i podamy czas, to Vue potrafi zczytać ten czas i dopiero po takim
czasie usuwa tak naprawdę nasz element, bo gdyby tylko zaaplikował klasy, która
go animuje, ale od razu go usunął, to tej animacji byśmy nie zobaczyli i Vue
również współpracuje z Key Frames. Potrafi właśnie z takiego zapisu wyczytać
sobie czas i biblioteka animate.css jest świetna, bo
możemy sobie tutaj różne animacje wybrać i pokażę ci teraz jak dowolną z nich
zaaplikować do jakiegokolwiek twojego elementu. Mi się podoba animacja, z której
skorzystamy i jest to animacja Light Speed gdzieś tutaj dostępna. Dokładnie
w tym miejscu, element przylatuje w jedną stronę i może odlatywać w drugą stronę
i chciałbym teraz to zaimplementować do naszego przykładu gdzie
zmieniamy sobie komponenty. Taką bibliotekę musiałem podłączyć do strony
i ja już to uczyniłem tutaj u góry z sieci cdn animate.css. Tam
jest bardzo dużo animacji, więc gdybym wiedział, że korzystam tylko z dwóch wybranych, to warto
je wyciągnąć z tego pliku, żeby nie ładować całego pliku, ale w naszym przypadku zostawimy
to w taki sposób. No i mamy tutaj naszą animacje, którą
wcześniej już stworzyliśmy, z tym że ona nie działa dlatego, że usunąłem kod CSS. Teraz ją
będę chciał zmodyfikować tak, aby działała z biblioteką animate.css, więc
do tej pory wiesz, że jeżeli zrobiliśmy tutaj name slide, to definiowaliśmy
nasze style jako slide enter i tak dalej. Natomiast możemy za pomocą
tych atrybutów, które się tutaj przepisuje do transition powiedzieć
jak ma się nazywać dokładnie klasa, bo tutaj podawaliśmy wyłącznie przedrostek tej
klasy i mieliśmy na przykład slide enter, ale jeżeli całość v-enter,
ktróra tam była czy slide enter chciałbym zmienić, również możemy to zrobić za pomocą
atrybutu na przykład enter active class i teraz będę chciał to
zrobić, dlatego usunę sobie name i tutaj będę chciał
dodać atrybut enter active class i
powiedzieć właśnie Vue jaka dokładnie ma być klasa kiedy będzie
ona na początku dodawana do tego elementu i żeby animate.css mogło działać,
to potrzebuję do elementu dodać kasę animated oraz klasę wybraną
przez nas. Ja chciałbym klasę light speed,
którą ci przedtem pokazałem. Natomiast na zejście to będzie leave active class,
również potrzebujemy klasy animated i w tym przypadku light speed
out. Okej,
to powinno nam wystarczyć, takie klasy są zdefiniowane dzięki
temu, że biblioteka CSS'owa jest podpięta, Vue potrafi z niej sobie
to wszystko zczytać i jak widzisz element jest pokazywany dzięki atrybutowi
appear i teraz odjeżdża w jedną z i drugi komponent wjeżdża. Naprawdę
wygląda to świetnie, aczkolwiek możemy wybrać sobie tutaj dowolną
inną animacje. Natomiast
ja jeszcze chcę ci pokazać tylko jedną rzecz. Jeżeli byśmy przeszli na github'a i przejdziemy
sobie po prostu tego pliku animate.css, to zobaczysz, że tutaj właśnie
nie ma transition, ale że mamy animacje z użyciem Key Frame i na przykład light speed in
jest to key frames i właśnie z tego również potrafi sobie zczytać odpowiednio
Vue wartość czasową. Także dlatego działa
to w ciekawy sposób i działa to bezproblemowo i działa to bardzo łatwo. Natomiast
warto wiedzieć jeszcze o jednym atrybucie, bo może być tak, że ty będziesz tworzył
swój własny kod CSS i zdarzy się tak, że jakiś element będzie miał
i Key Frames i transition i Vue nie będzie wiedział, z którego ma zczytać
czas, a więc możemy dodać jeszcze jeden atrybut type i tutaj
możemy wpisać transition loop animation. W tym przypadku jeśli wpiszę animation
nic się nie zmieni, bo Vue i tak z tych key frames zszczytywało ten czas,
ale gdybym zmienił na transition, mówiąc Vue, że ma szukać to
we właściwości transition, tam ma szukać czasu to
to nie powinno nam zadziałać. Sprawdźmy, okej,
nie działa, bo znowu popełniłem błąd. Prawdopodobnie
niebawem nauczę się na pamięć jak to się pisze, jak widzisz teraz
to przestało działać, ale jeżeli zmienimy na animation, mówiąc
żeby szukał czasów key frames, tak działa już poprawnie, więc warto o tym
pamiętać, jeżeli coś ci nie będzie działać. Jeżeli sam będziesz próbował napisać animacje,
że możesz powiedzieć Vue gdzie ma szukać tego czasu, który jest tutaj
potrzebny, okej i kończąc temat animacji i chciałbym jeszcze w lekcji kolejnej
żebyśmy stworzyli sobie customowy komponent do tworzenia takich transition, które
będą wykorzystywały animate.css.