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
Kończąc temat eventów, bo jest to temat dosyć prosty, chcę ci
pokazać jeszcze jedną rzecz mianowicie modyfikatory klawiszy. Czyli
już nie modyfikatory takie jak prevent default, które widziałaś lekcji poprzedniej,
ale modyfikatory dla klawiszy, czyli będziemy chcieli na przykład
wykryć kiedy ktoś takim polu, które mamy tutaj wciśnie powiedzmy Shift Enter
albo Command Enter. Powiedzmy, że normalnie możemy pisać, jeżeli wciskam enter przechodzę
do nowego wiersza, ale chciałbym po wciśnięciu Control czy Command Enter powiedzmy
na Macu, aby ten formularz był wysyłany, aby
nie przychodził wtedy do nowej linii. No i teraz pytanie. W jaki sposób można to zrobić
za pomocą modyfikatorów klawiszy. robi się to bardzo prosto.
Oczywiście musimy przypisać jakieś zdarzenie. Ja na razie tutaj mam tylko zdarzenie submit
i prevent tutaj. Co ciekawe jedna rzecz, której ci jeszcze nie pokazywałem,
mógłbyś zrobić coś takiego i nie musisz wtedy przepisywać
w ogóle zdarzenia. Czyli jeżeli chciałbyś po prostu zapobiec domyślnej akcji przeglądarki,
możesz przypisać submit prevent. Sprawdźmy czy rzeczywiście to zadziała, jak
widzisz tak, nie ma żadnego błędu. Natomiast ja chciałbym mieć zdarzenie submit, które
tutaj będzie robić to, co w lekcji poprzedniej. Zakładamy, że w tym miejscu wysyłamy
dane na serwer, więc mamy takie pole text area i chciałbym do niego
przypisać sobie zdarzenie. Żeby to było bardziej czytelne, może złamiemy
sobie to na kolejną linię i przypiszemy zdarzenie Key Down. Czyli
ono się wykona za każdym razem gdy wciśniemy jakiś klawisz i następnie
dodamy sobie modyfikator, który nazwiemy control enter, czyli dwa
modyfikatory, bo modyfikatory można łączyć. No i teraz pytanie,
co chcielibyśmy wtedy zrobić. Chciałbym wywołać też metodę submit. Sprawdźmy
w jaki sposób to zadziała. Jeżeli coś tutaj będę pisał, wcisnę enter,
nic się takiego ciekawego nie stało, ale jeżeli wcisnę Control Enter, jak
widzisz wysłaliśmy nasze zapytanie, można powiedzieć i widzimy
to po tym, że ten przycisk tutaj jest wyszarzony w taki
sposób, czyli ta linijka na pewno się wykonała. Oczywiście
modyfikator może być tylko jeden, ja chciałem zrobić dwa, a więc Control Enter i
wtedy robimy sobie submit. Natomiast tutaj jeszcze można
by było dodać prevent, aby zapobiec domyślnej akcji przeglądarki. Powiedzmy, że zrobilibyśmy
tutaj Shift Enter. Jeżeli coś wpiszemy
sobie Shift Enter, to jak widzisz, nasze zdarzenie się wykonało, ale też przeszliśmy do nowej linii,
więc tutaj można byłoby jeszcze zrobić prevent, czyli zapobiec
domyślnej akcji przeglądarki. Natomiast ważna jest kolejność łączenia tych
modyfikatorów, bo gdybym dodał go na początku, to za każdym kliknięciem
klawisza robilibyśmy prevent i to by nie zadziałało. Zobacz teraz Shift Enter wysyła
nam takie zapytanie, fikcyjne oczywiście, nie mamy logiki do tego,
ale już nie przechodzi do nowego wiersza. Pokażę ci tylko o co chodzi z
kolejnością. Jeżeli byśmy to zrobili w taki oto sposób to
wtedy zapobiegamy od razu domyślnej akcji, a potem dopiero nasłuchujemy na Shift i Enter,
więc tutaj w zasadzie nie będę mógł wpisać nic
innego niż jakieś dowolne znaki, a nie będę mógł postawić Enter'a, zobacz. Ani
też nie będę mógł wcisnąć Sift'a, czyli w zasadzie nic tutaj się wtedy nie będzie działo, bo przy tych
dwóch klawiszach będziemy zapobiegać domyślnej akcji, więc chcemy zrobić inaczej. Jeżeli
jest Shift i Enter to wtedy chcemy zapobiec
domyślnej akcji, czyli one muszą być razem. Jeżeli to odświeżę, to mogę
wciskać normalnie Enter, ale w połączeniu z Shiftem ta akcja jest wywoływana. Teraz
może jesteś ciekaw, jakie modyfikatory mamy, czyli na przykład Shift Enter.
Jakie są jeszcze inne, więc ja może wkleję ci je w tym miejscu. Możesz korzystać z
enter, tab, escape, spacji strzałek
wszystkich, również z control alt shift oraz meta i teraz meta
jest to przycisk w Windowsie właśnie tego znaczka Windows na klawiaturze, a
w przypadku Maca będzie to przycisk CMD czyli Command. Co
ważne takie modyfikatory przycisku możesz przypisać też do innych zdarzeń, czyli
na przykład do kliknięcia, więc jeżeli chciałbyś zarejestrować zdarzenie
kliknięcia na jakimś elemencie na przykład na tym div'ie to mógłbyś tutaj napisać click
i następnie na przykład control równa się metoda i ta
metoda się wywoła tylko jeżeli kliknąłeś na ten element trzymając klawisz
Control i tutaj oczywiście również możesz wszystkie inne modyfikatory
klawiszy przypisać. Co jednak jeszcze jest ciekawe, możesz również
podać kod przycisku, bo tutaj mamy pewne aliasy. Dla enter, tab i tak dalej, ale
co jeżeli chciałbyś przypisać modyfikator na przykład dla przycisku D na
klawiaturze. Ciekawe jest to, że w nowoczesnych przeglądarkach zadziała
to bez żadnych kombinacji, że tak powiem, czyli jeżeli tutaj
przy tym textarea mieliśmy shift enter, mógłbym zrobić po prostu D
i automatycznie zadziała to w przypadku wciśnięcia klawisza D na
klawiaturze, ale w starczych przeglądarkach to nie zadziała. Trzeba będzie podać keycode,
tak zwany, czyli na przykład musiałbym tutaj wpisać powiedzmy 117. Musiałbym
wiedzieć jaki jest kod klawisza D. Nie wiem czy to akurat 117, ale teraz ci pokażę w
jaki sposób można to sprawdzić, bo możemy przejść na stronę keycode info i
tutaj wystarczy, że wciśniesz dowolny klawisz, który cię interesuje na przykład
D i widzimy, że jest to 68. Jeżeli wcisnę A, jest to 165 i tak
dalej, więc taki modyfikator mogę również dodać, właśnie w sposób liczbowy.
W dowolnym miejscu tutaj zamiast Shift czy Enter mogę podać jego kod.
Sprawdźmy przy okazji jaki ma Shift. Jest to 16. Enter jest o 13.
Ale gdybyś chciał utworzyć alias, to chciałbym ci jeszcze na koniec pokazać, powiedzmy
chcesz utworzyć alias, który dowolnie nazwiesz, ale może nazwiemy
sobie go custom, to możesz zrobić coś takiego. Odwołać się do Vue,
następnie do config i tutaj keycodes i możesz
sobie dodać dowolny. Możesz sobie oczywiście to keycodes wyświetlić, zobaczyć co tam jest, ale
dodajmy sobie taki o nazwie custom i powiedzmy, chciałbym żeby to był przycisk D, więc 68
i teraz w dowolnym miejscu, gdzie z tego
korzystaliśmy, mógłbym napisać custom. Okej,
zobaczmy i teraz jeżeli wpiszę sobie cokolwiek jest okej. A jeżeli wcisnę D, to
jak widzisz, nie zostało dodane, bo zrobiłem prevent i zostało
to wszystko wysłane, więc w ten sposób możesz sobie dodawać jakiś
custom'owy modyfikator, czyli po prostu tworzyć dla niego alias jeżeli nie chcesz go podawać w taki
sposób za pomocą kodu. Na koniec jeszcze jeden
ciekawy modyfikator, nazywa on się exact. Powiedzmy, że chciałbyś
przypisać do tego przycisku zdarzenie kliknięcia. ale tylko jeżeli
kliknąłeś i nie był trzymany żaden inny przycisk. Bo może być tak, że na
przykład z kontrolę będziesz miał inną akcje, a bez kontrola jeszcze jakąś inną. To
jeżeli miałbyś tutaj dodany click w ten sposób, jakaś
akcja i chciałbyś, żeby ona się wywoływała wyłącznie wtedy jeżeli kliknięcie
było bez trzyma żadnego innego klawisza, to możesz dopisać exact,
w ten sposób i może tutaj napiszemy coś takiego. Stworzymy
na szybko taką metodę, tylko po to żeby to pokazać. Napiszemy
czyste kliknięcie. Okej, sprawdźmy. Jeżeli
kliknąłem bez trzymania czegokolwiek, mamy czyste kliknięcie. Jeżeli przytrzymam na przykład Control,
to jak widzisz już ta akcja się tutaj nie wywołała, więc
warto o tym pamiętać, być może kiedyś ci się to przyda. Poza tym tyle, jeżeli chodzi
o eventy. Podsumowując, eventy przypisujemy za pomocą małpka nazwa
event lub v-on dwukropek nazwa tego eventu. Tutaj może być
dowolne wyrażenie lub podana metoda. Widziałeś również jak do niej przekazywać
parametry i event. Domyślnie ten event jest przekazywany jako
pierwszy parametr, jeżeli tutaj tego nie wywołujemy. Jeżeli wywołujemy możemy skorzystać z
dolar event. Zobaczyłeś również, że mamy modyfikatory, takie jak na przykład prevent
default, które wykonujemy w ten sposób i je można również włączyć, a także pokazałem
ci modyfikatory klawisze.