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
W tej lekcji pokażę ci w jaki sposób zainstalować sobie Vue
na swojej stronie internetowej, czyli innymi słowy jak dołączyć ten skrypt. Oczywiście robimy
to w sposób standardowy, ale ważniejsze będzie dla nas tutaj to jaką
wersję Vue wybrać, bo okazuje się, że jest kilka wersji, dlatego
chciałem ci krótko przedstawić jakie są między nimi różnice. Jesteśmy
na stronie vuejs.org i jest oficjalna strona tego frameworka i przejdziemy
tutaj dollern Oraz dodaj swoją drogą jest tutaj całkiem niezła dokumentacja
w której będziesz mógł również znaleźć wiele ciekawych informacji
oczywiście zdecydowaną większość z nich zobaczysz w tym kursie, ale
gdybyś chciał wrócić to jest odpowiednie miejsca i tutaj i przejdziemy do
installation. No i od razu widzimy tutaj instrukcję
instalacji. Jest ich kilka, czyli Direct Script Include to
jest to co my będziemy chcieli na początek tego kursu zrobić, a więc do strony dołączyć
w standardowy sposób tę bibliotekę, ten framework w zasadzie. I mamy
tutaj do wyboru dwie wersje Development oraz Production i jeżeli tutaj
kliknę na jeden z tych przycisków to pobierzemy sobie po prostu plik JavaScript'owy.
Natomiast ja chciałbym podłączyć sobie Vue do naszej strony
z sieci CDN dlatego że dzięki temu nie będę musiał
mieć wielu kopii tego pliku w naszych przykładach do kursu, czyli podłączymy
sobie to po prostu zewnętrznego adresu. Jak to zrobić? Widzimy tutaj poniżej.
Z tym, że gdybym wziął tę wersję to podłączymy sobie zminifikowaną wersję
produkcyjną, a ja chciałbym podłączyć wersję Development. Ważne
jest również to, że jeżeli tutaj byśmy kliknęli, to jest kilka wersji Vue. Mamy
wersję pełną i ona zawiera zarówno kompilator jaki i
runtime. Mamy na przykład wersję gdzie jest tylko runtime i mamy
jeszcze wersję, jak widzisz, pełną, produkcyjną i runtime produkcyjną i teraz
wersja Development, która nas będzie interesować różni się od produkcyjnej tym, że
po pierwsze ten kod JavaScript tego framework'a jest niezminific'owany, czyli
zajmuje więcej, ale co jest ważniejsze zawiera w sobie logikę do
wyświetlania ostrzeżeń w konsoli przeglądarki, więc jeżeli będziemy
z Vue korzystać w nieprawidłowy sposób lub gdzieś się pomylimy, jest duża szansa,
że zobaczymy ostrzeżenie i Vue po prostu powie nam co powinniśmy zrobić inaczej,
więc na czas development'u, świetna rzecz i będziemy chcieli to mieć
dlatego interesuje nas wersja development. Natomiast również interesuje nas
wersja full, która zawiera runtime, a runtime jest to całe
to środowisko Vue, które jest potrzebne, żeby aplikacja mogła działać. Bez tego Vue można
powiedzieć nie istnieje. Natomiast dodatkowo również kompilator
templatek i możemy się obejść bez tego kompilatora, co zrobimy
później w tym kursie, więc ten kompilator templatek jest po to, że kiedy dołączymy
sobie do strony Vue to będziemy bezpośrednio w kodzie HTML tej strony
mogli korzystać z różnych dyrektyw i również z takiego systemu
templatingu, które Vue oferuje, a ten załączony razem z tym skryptem
kompilator będzie mógł te templatki kompilować tak, żeby Vue mogło je
podmieniać później w drzewie DOM, czyli w obiektowym modelu dokumentu. Natomiast
później w tym kursie kiedy będziemy pracować z webpack'iem i z takim narzędziem Vue CLI,
tam będziemy mogli kompilować templatki już na etapie build'a
i do przeglądarki będziemy dostarczali kody JavaScript już właśnie
w takiej wersji czyli templatki html'owe będą zamienione na funkcje JavaScript'owe
i wtedy samo Vue nie będzie już musiało zawierać w sobie
tego kompilatora. Dzięki temu będziemy mieli trochę chudszy plik i będzie to
szybko, wszystko będzie szybciej po prostu działać. Także na początek chcemy do
strony dołączyć sobie pełną development'cką wersję, również z kompilatorem, bo
będzie on nam niezbędny. Vue można również, co ważne i będziemy to
robić później, zainstalować z użyciem npm, ale do tego przyjdziemy w dalszej
części tego kursu, więc widzisz tutaj kilka sieci
cdn z których można skorzystać natomiast ja chcę przejść pod taki adres, bo tutaj
będziemy mogli sobie wybrać wersję Vue, która nas interesuje. Tabelka, którą widziałeś przed
momentem właśnie tam pokazywała takie wersję i nas na potrzeby tego
kursu interesuje Vue w tej pełnej wersji, dlatego kliknę tutaj
kopiuj i co ważne w tym kursie będziemy korzystać z wersji 2.5.13
i najlepiej byłoby gdybyś ty korzystał identycznej, wtedy masz gwarancję, że wszystkie
przykłady z tego kursu będą działać poprawnie. Oczywiście będę się starał ten
kurs również aktualizować, jeżeli coś się zmieni. Jeżeli jakieś przykłady przestały
być z jakiegoś powodu działać. Natomiast przerabiaj proszę ten kurs na dokładnie tej
wersji. Okej, zatem przyjdziemy sobie do kodu html
mam tutaj już ten pierwszy przykład i znajdziesz go w katalogu 01 w plikach
źródłowych i po prostu będę chciał tutaj do tej strony dodać normalny
skrypt i wkleję tutaj właśnie ten adres sieci
cdn. Dzięki temu poniżej w skrypcie, który dołączymy lub w który wpiszemy tutaj
bezpośrednio będziemy mieli dostęp do globalnego obiektu Vue, zktórego będziemy
korzystać i teraz jeszcze jedna rzecz. Ja tutaj podłączyłem, jak widzisz z sieci
cdn również spectre CSS jest to framework css'owy, który, których
znajdziesz na takiej stronie i jest to po prostu framework bardzo
podobny do na przykład bootstrap'a, więc pewnie wiesz o co chodzi. Generalnie dzięki
niemu będziemy mieli jakiś przyzwoity wygląd wszystkich przykładów, które będziemy tworzyć tym
kursie. Także ja ten framework już dołączam do strony w wersji zminificowanej
dlatego, że ten css jest dla nas nie jest istotny, żeby do niego zaglądać. Okej i
teraz ja ten przykład uruchomiłem również za pomocą http serwera, czyli tak jak
pokazywałem ci w poprzedniej lekcji i będziemy mogli sobie przejść przeglądarce
pod ten adres i na tej stronie przejdziemy do narzędzi deweloperskich,
czyli kliknę prawym przyciskiem, wybiorę zbadaj. Tutaj w konsoli Vue
powinno nam dać wiadomość. Dokładnie tak jest. Po pierwsze wiadomość You
Are Running Vue in Development Mode i chodzi o to żebyśmy byli świadomi
tego, że jest to wersja developmencka i w produkcji powinniśmy to skrypt zminificowany. Pokażę
ci w tym kursie jak to zrobić, ale to będzie później. Natomiast jeszcze jedna ciekawa podpowiedź,
że możemy skorzystać z Vue devtools i to jest coś co chciałbym żebyśmy sobie zainstalowali. Bardzo
przydatne rozszerzenie do przeglądarek, które pozwoli nam debug'ować nasze aplikacje. Wybiorę Get
Chrome Extension, będziemy pracować w przeglądarce Chrome i również ci polecam
to robić na potrzeby tego kursu dodamy to po prostu do Chrome klikając
tutaj no i mamy takie oto rozszerzenie. Jeżeli wrócę na stronę, tutaj
jak widzisz rozszerzenie się pojawiło mamy Vue js is not detected, bo musimy
jeszcze zresetować sobie przeglądarkę, więc jeżeli zaraz wrócę do przeglądarki. Jeszcze
raz sobie otworzę narzędzia deweloperskie to zobaczymy tutaj nową kartę
Vue i jeżeli to klikniemy to po pierwsze mamy komunikat jaka wersja
w została wykryta, a po drugie mamy tutaj serię różnych paneli i
o nich będzie mówić jeszcze później. Świetne narzędzie, które pozwoli nam naprawdę
fajnie debug'ować nasze aplikacje i jeszcze ostatnia rzecz w tej
lekcji, którą chciałbym żebyś zrobił, przejdź do Network i upewnij się, że disable cache
nie jest zaznaczone, dlatego że jeżeli zaznaczymy sobie tę opcję
to za każdym razem kiedy mamy otwarte narzędzia deweloperskie i odświeżamy stronę to zauważ,
że wszystkie i skrypty i na przykład pliki JavaScript'owe są pobierane z
sieci. No i dlatego, że podłączyłem te pliki z zewnętrznych
sieci to jeżeli będziemy odświeżać tą stronę to za każdym razem będą pobierane od nowa i
to może chwilę trwać. Natomiast jeżeli tą opcję odznaczymy i odświeżę stronę. Zobacz,
one są serwowane z pamięci podręcznej, więc na potrzeby tego kursu
z uwagi na to, że podlinkowaliśmy sobie to zewnętrznych linków, nie chcę żeby
to było pobierane za każdym razem od nowa. Oczywiście jeżeli to narzędzie jest zamknięte wtedy
nie ma to znaczenia. Przeglądarka cache'uje te pliki, ale często to narzędzie
będzie po prostu otwarte. Okej i to by było zatem tyle w tej lekcji,
a w kolejnej lekcji wykonamy sobie już pierwszy projekcik. Będzie
to Hello World z użyciem Vue i zobaczysz w jaki sposób w ogóle skorzystać
z instancji Vue czy z tego konstruktora globalnego Vue,
który tutaj dla nas będzie dostępny.