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
Mając przykład z lekcji poprzedniej stwórzmy sobie swój własny komponent
do animacji. Tutaj, jak widzisz animate.css nam działa
poprawnie. Natomiast chciałbym to opleść komponentem. Co będzie dosyć proste. Zamiast
pisać całe to transition i za każdym razem podawać enter active
i tak dalej, to stworzymy sobie swój własny komponent, który nam to wszystko zenkapsuluje
można powiedzieć, czyli to co jest w tym miejscu chcę sobie skopiować i będę
chciał utworzyć nowy komponent w tym miejscu, Vue komponent, nazwiemy
go edu animation i tutaj
musimy podać oczywiście jego konfigurację, więc na początek template, to co skopiowałem w
temple string'u w ES6 sobie to zapiszemy i jedna
ważna rzecz. Oczywiście to keep-alive stąd usuniemy, a w tym miejscu wstawimy
slot, czyli wszystko co zostanie wstawione do
naszego komponentu, który tutaj będziemy sobie mogli teraz podać. Może
ja go na początek zamienię w ten sposób, edu animation, wszystko
co do niego wstawimy zostanie wstawiony do tego slota, czyli to jest pierwsza
rzecz, którą chcemy zrobić i druga jest taka, że chciałbym poprosić sprawę i podawać
tylko nazwę e klasy czy nazwy animacji z animate.css, oczywiście
to animate, musi być do strony podpięte, więc będę chciał to zmodyfikować
w taki sposób, żeby
tutaj móc podawać klasę enter, wyłącznie
light speed in i klasę, która będzie dla
nich będzie to znacznie uproszczone, łatwiej będzie po
prostu z tego korzystać. Jeżeli jest mniej tych atrybutów, to może
nawet w jednej linijce będzie to wyglądać całkiem nieźle, okej i teraz skoro możemy
podawać takie wartości, to pewnie trzeba byłoby je przyjąć jako props.
Dokładnie tak jest, więc żebyśmy w komponencie mogli się do nich odwoływać to
zrobimy props i potem tablice tych które możemy, przyjąć czyli enter i live, ok
i skoro je mamy skoro je przekazaliśmy to w tej templatce
można z nich korzystać, dlatego w tym miejscu chciałbym móc z tego skorzystać, ale
pamiętaj, że tutaj żadna tego typu interpolacja nie zadziała, bo jesteśmy wewnątrz
atrybutu, więc ten atrybut appear jeszcze usunę i enter active class
musimy zrobić dynamiczne, czyli zbindować i wewnątrz animated
już by nam generował błąd, bo byłoby szukane w props w data lub w
computed properties, dlatego musimy to zapisać jako string, w ten sposób
i do tego będę chciał dodać sobie klasę,
która została nadana w prop enter, tutaj ważna jest ta stacja, a tutaj
będziemy chcieli to też zbindować, animeted to jest klasa, która jest tutaj konieczna
i do niej będziemy chcieli dopisać to co zostało przekazane pod
live, okej. Zobaczymy czy ma to sens, czy
nam to w ogóle zadziała. Przejdźmy tutaj, otworzę konsolę i odświeżę
i widzimy, że rzeczywiście działa to poprawnie, więc w tym momencie nasz komponent
jest prawie gotowy. Możemy dowolne rzeczy oplatać za pomocą edu
animantion i podawać klasę na wejście i zejście. Natomiast chciałbym móc tutaj
również podawać atrybut appear. Nie wystarczy, że go tutaj dopisze w taki sposób,
to niestety nie zadziała, bo musimy go również przyjmować, więc muszę podać sobie
w props, że my oczekujemy takiego
atrybutu i wtedy będę mógł również tutaj dopisywać, więc
po prostu zbinduje appear, równa
się appear, czyli jeżeli ktoś go przekaże to również go tutaj wtedy dopiszemy.
Zobaczmy i teraz bez problemu działa to również na wejście, jak widzisz,
natomiast, jeżeli byśmy usunęli ten atrybut
przestaje to działać. Dlatego ja do niego
wrócę i przy okazji jeszcze ci pokażę w Dev Tools tutaj jak ten atrybut
wygląda. Czyli jeżeli jest tylko podane to ma pustą wartość, ale to wystarczy w momencie,
kiedy bindujemy go tutaj, żeby to oryginalne transition uznało,
że on po prostu jest podany. Zobaczmy czy to wszystko wygląda dobrze czy
jeszcze nam tutaj czegoś brakuje. Wygląda
w porządku, myślę że nic więcej już chyba nie musimy dopisywać, dzięki temu stworzyliśmy
sobie swój prosty komponent, który może być reużywalny, możemy
nim oplatać dowolne elementy, tak jak to robiliśmy wcześniej z użyciem transition i
podawać klasę, którą znajdziemy na stronie animate.css na wejście, zejście, a
dodatkowo możemy podać również atrybut appear. To zatem tyle
jeżeli chodzi o animacje, mam nadzieję, że to ci się spodobało. Vue oferuje
jeszcze bardziej zaawansowane typy animacji, które możemy kontrolować z użyciem języka
JavaScript, natomiast jest to akurat temat wykraczający poza ten
konkretny kurs, ale niewykluczone, że jeszcze do tego tematu na eduweb.pl
wrócimy w kolejnych materiałach.