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
Wiesz już w jaki sposób wyświetlać dane z użyciem Vue na
stronie internetowej. Oczywiście są to na razie podstawy, ale już to zobaczyłaś. Również
dowiedziałeś się w jaki sposób działa Virtual DOM, czyli
w jaki sposób Vue wie, które części drzewa ma zmieniać,
a których nie. W tej lekcji natomiast, pokażę ci jak
możemy pracować z metodami, dlatego że tutaj do data dodajemy
sobie wszystkie rzeczy, które chcemy gdzieś wyświetlać na stronie
lub z których chcemy skorzystać na przykład w metodach i teraz
ważne jest to, że metody również dodajemy w tym obiekcie, czyli w zasadzie ten obiekt konfiguracyjny
na nowej instancji Vue jest niesłychanie ważny, bo wszystkie istotne
rzeczy dodajemy właśnie tutaj, więc będziemy chcieli tutaj sobie dodać
obiekt methods, zwyczajny
obiekt i w nim będziemy mogli dodawać metody w taki oto sposób. Na
przykład dodamy sobie metodę powiedzmy toUppercase i
będzie to po prostu funkcja. Ja bym chciał, żeby
ta funkcja przyjmowała jakiś parametr, więc powiedzmy, że będzie
to tekst albo value, bo
nie chciałbym ci tutaj pomieszać, że jeżeli tutaj mamy nazwę tekst, to to ma z tym coś
wspólnego. Chciałbym, żeby ona zwracała return value
toUppercase, powiem ci od razu, że do tego konkretnego celu, żeby
string zamienić na wielkie litery, lepszy będzie filter. O filtrach powiemy
sobie później. Natomiast chciałbym ci pokazać w jaki sposób w ogóle wywołuje się metody, jak się przekazuje
parametr, a więc w miejscu gdzie normalnie wywołaliśmy tekst i mówiłem
ci, że wszystko co wpisujemy tutaj to jest odzwierciedlenie tego co jest w data, czyli data kropka
text. To tutaj samo text, to okazuje się, że możemy tutaj również skorzystać
z metody. Mogę napisać toUppercase, tylko że z metody
korzystamy w ten sposób, czyli wywołujemy ją jako funkcję. Nie musimy jej przekazywać
żadnej wartości i będzie to działać poprawnie jeżeli ta metoda zwraca
jakiś string lub inną wartość, która może być zamieniona na string i tutaj podstawiona.
Natomiast ja od razu stworzyłem funkcję, która przyjmuje jakąś wartość, żeby ci pokazać
jedną ciekawą rzecz. Mogę tutaj wstawić tekst w taki oto sposób. Odświeżymy
to i zobaczymy Witaj Świecie zamienione na wielkie litery, ale nie muszę tego
wpisywać sposób ręczny. Mogę tutaj napisać samo tekst i okaże
się, że Vue wie, że chodzi o tekst, właśnie który znajduje się
w data. Zobacz co tutaj się wydarzy. Witaj świecie. Witaj
w świecie Vue.js, czyli taki prosty napis pozwoli mi
wywołać metodę podaną w obiekcie methods i przekazać
jej tekst, czyli właściwość, która znajduje się w tym miejscu i to co
jest niesłychanie ważne, jeżeli teraz byśmy zmienili tekst to Vue wywoła tę
metodę od nowa i to tutaj podmieni na razie jeszcze ci nie pokazałem
w jaki sposób można obsługiwać zdarzenia, żebyśmy mogli to zmienić, dlatego będziemy pracować
tutaj w tym narzędziu deweloperskim. Zmieńmy sobie ten heading na,
znaczy w zasadzie ten tekst na Witaj w Świecie Vue.js,
dodam sobie tutaj trzy wykrzykniki wciskam enter i zobacz Vue to odzwierciedlił
tutaj na stronie, czyli po pierwsze zmienił się tekst. Po drugie została
wywołana metoda, która zamieniła go na wielkie litery i tekst tego paragrafu
został zaktualizowany, co ważne za pomocą Virtual DOM, Vue w ogóle
nie ruszył tego oto elementu h1, dlatego może być tak bardzo wydajny,
nie zmienia wszystkiego, jeżeli dane się nie zmieniły, heading się nie zmienił,
więc nie ma potrzeby renderowania tego od nowa. Jak zatem widzisz,
nie tylko właściwości dodane w data są proksowane do głównej instancji,
bo możemy na niej się odwoływać właśnie dolar vn0 kropka
heading, da nam ten string, ale kropka toUppercase
pozwoli nam się odwołać do tej metody, czyli na główną instancje są proksowane
wszystkie rzeczy, które znajdują się w data, ale również w methods i nie
tylko, bo jeszcze będziemy mieli coś co nazywa się computed properties i o tym powiemy
sobie w lekcji kolejnej. Jak później się przekonasz metody będziemy wykorzystywać
na przykład po kliknięciu na jakiś element i tak dalej, więc będzie opcja
taka, aby je wywoływać w sposób inny niż wpisując
je tutaj, bo oczywiście można to robić, ale metody mogą być bardziej ogólne. Metody
wcale nie muszą być tutaj wykorzystywane, bo możemy mieć metodę, która na przykład pobiera
jakieś nowe dane serwera i po prostu aktualizuje coś wewnątrz data. Jeżeli
metoda to zrobi to vue to odzwierciedli na stronie, dlatego teraz jeszcze
chciałem dodać sobie jedną metodę i może to będzie
metoda o nazwie get name i będę
chciał zrobić tutaj jeszcze jeden paragraf, imię
i tutaj będę chciał podstawić name, więc
co jest bardzo ważne, że to nam w ogóle zadziałało muszę już na początku
tworzenia tej instancji dodać tutaj name. Może
to być pusty ciąg znaków, ale być tutaj musi i teraz dodamy
sobie metodę get name, która zapyta użytkownika o jego
imię i przepisze to do name i teraz żeby
się w metodach odwołać do tych wartości, które są tutaj w data to
robimy to poprzez this kropka nazwa metody. This jest
to cała instancja, czyli to samo co byłoby zwrócone tutaj gdybym to przechwycił w zmiennej
i to samo co mamy tutaj pod taką utworzoną przez Vue devtools zmienną,
czyli tak jak wspomniałem wszystko jest proksowane z obiektu data na
główną instancje, dlatego this kropka name będzie kierować tutaj, więc
jeżeli napiszę sobie this name równa się prompt.
Podaj swoje imię to
w momencie kiedy wywołamy metodę get name, powinniśmy w ten sposób przypisać
to do name, to co ktoś poda, a Vue automatycznie powinien zmienić treść tego paragrafu. Po
odświeżeniu nic się nie zmieni, ale jeśli tą metoda wywołamy i wiemy, że możemy
to zrobić za pomocą vn0 i wywołanie
metody, czyli get name. Okej,
mamy tutaj błąd, to było chyba dolar vn0.
Zobaczymy czy to na pewno nazwałem
w ten sposób, zgadza się. Odświeżmy, widzimy,
że vn0 nie jest tutaj dostępne, a być powinno, za
pomocą tego oto zapisu. Okej, czyli
to musi być kliknięte, nie wiem czy jest jakiś back czy tak być powinno. Jeżeli kliknąłem to vm0,
to wtedy to się pojawia tutaj, więc ta metoda rzeczywiście wreszcie nam się odwołała. Pojawi
się prompt i ten prompt tak naprawdę blokuje wykonywanie kodu JavaScript, więc
dopiero jak podam wartość, to ona jest zapisywana tutaj. No więc napiszmy sobie
tutaj jakieś imię Piotr i zobacz od razu
to się pojawiło na stronie, czyli z tej lekcji zapamiętaj tyle, że
z metod możemy korzystać wewnątrz tutaj tych interpolacji, gdzie
chcemy coś wstawić, może będą przekazywać parametry. Nazwa parametru tutaj
od razu jest brana na przykład z data, ale nie tylko, bo
będzie również mogła być brane z computed properties o której w lekcji kolejnej, a po
drugie metody można również wywoływać inny sposób, czyli wcale nie muszą być gdzieś tutaj
w taki sposób wywoływane, będziemy mogli później po kliknięciu w jakiś element
wywołać metodę, która na przykład pobierze dane serwera, przypisze je do
jakiegoś obiektu, czy do jakieś tablicy, która będzie wewnątrz data jeżeli gdzieś z niej korzystaliśmy
w templatce, czyli w szablonie to Vue nam to na stronie zaktualizuje.