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
Do tej pory w tym kursie pracowaliśmy w taki niezaawansowany sposób, w
dość prosty, mianowicie mieliśmy stronę, czyli index.html,
podłączony framework Vue w postaci zewnętrznego skryptu oraz wpisaliśmy
sobie w tagu script cały nasz kod i ja specjalnie pokazywałem
ci to w ten sposób dlatego, że nie chciałem już na początku zarzucić cię różnymi
nowoczesnymi narzędziami i podejściami do budowania aplikacji internetowych, dlatego
że nie wiem na jakim jesteś etapie przystępując do tego kursu, a wymagania do
tego kursu były jedynie takie, aby znać język JavaScript, mieć jakieś doświadczenie
w pracy z obiektowym modelem dokumentu, a więc jeżeli pracowałeś
z takimi narzędziami jak na przykład webpack czy wpisałeś kod ES6, to uważam,
że to co Ci pokazałem do tej pory, czyli zrozumienie sedna działania Vue zostanie
ci w głowie i będziesz potrafił dodać to albo w zasadzie do tego dodać
swój cały Work Flow, czyli będziesz potrafił wpisać kod w sposób nowoczesny
z użyciem ES6 i tak dalej. Natomiast jeżeli jesteś osobą która jeszcze się
nie nauczyła, nie poznała składni ES6 nie znasz narzędzi takich jak na
przykład webpack, to myślę, że też zrobiłem dobrze dlatego, że
nauczyłeś się w Vue.js na prostych przykładach, na prostym kodzie, a jeżeli
poznasz te zaawansowane narzędzia to też będziesz mógł dopiero wtedy je wykorzystać. Nie
zarzuciłem cię nimi od początku, mam nadzieję, że był to dobry wybór z mojej strony natomiast
okazuje się, że z Vue podobnie jak z innymi frameworkami takimi jak na przykład React czy Angular, jak
najbardziej można pracować w taki nowoczesny sposób dzieląc pliki na wiele różnych
komponentów i tak dalej, więc będę chciał ci to pokazać w tej i kilku
kolejnych lekcjach i do tego celu wykorzystamy sobie takie narzędzie, które nazywa się Vue CLI. Natomiast,
żebyś dobrze zrozumiał to co będę chciał ci teraz pokazać byłoby super gdybyś
miał jakieś podstawy webpack, czyli gdybyś kiedykolwiek korzystał z tego narzędzia i
w kolejnych lekcjach będziemy pisać kod w standardzie EcmaScript6, chociaż
to wcale nie jest wymagane, ale będzie po prostu wygodniej, więc żebyś go rozumiał
też byłoby dobrze żebyś miał już z tym wcześniej do czynienia i te tematy co
jest bardzo ważne poruszyłem już na eduweb.pl i kurs webpack'a znajdziesz
pod takim adresem, trwa on niewiele ponad 3 godziny, więc tak naprawdę możesz
go bardzo szybko przerobić, a wiele zrozumiesz i ten webpack przyda ci się w różnych innych
jeszcze projektach i również kurs EcmaScript6 gdzie omawiam najnowszy
standard języka JavaScript. W razie czego serdecznie ci te dwa kursy polecam.
Natomiast teraz będę chciał żebyśmy sobie zainstalowali oficjalne narzędzie od Vue,
które nazywa się Vue CLI i ono pozwoli nam bootstrap'ować nowy
projekt, czyli utworzy nam po prostu już strukturę katalogów, plików i
tak dalej, żebyśmy mogli wygodnie pracować i skonfiguruje nam webpack'a, czyli docelowo
tak naprawdę będziemy korzystać z webpack'a. Webpack Dev Server i wielu innych rzeczy. Jeżeli
to o czym mówię jest dla ciebie czymś nowym tak czy siak polecam obejrzeć tę i kilka
kolejnych lekcji, bo będziesz w stanie pracować razem ze mną, nawet jeżeli nie
rozumiesz w stu procentach jak działają te narzędzia. Jedno jest ważne,
będziemy pracować w terminalu. Więc przejdę sobie do terminala i będąc w
terminalu ja już przeszedłem do folderu 51, aczkolwiek to co wykonam akurat teraz,
można zrobić będąc na dowolnym poziomie, wpiszemy sobie npm install
minus g vue cli. Ważne,
żebyś miał oczywiście Node.js, no i razem z tym zainstalowany npm. To nam
zainstaluje globalnie takie polecenie, które nazywa się Vue i teraz
będziemy mogli z niego korzystać. Jeżeli wcisnę tutaj enter, to widzimy w jaki
sposób tutaj można z tego korzystać. Mamy init list build oraz help. Jeżeli
wpiszemy vue list, to pokaże nam się lista wszystkich
takich jakby szablonów projektu, z których można skorzystać. Ja
będę chciał żebyśmy skorzystali z projektu webpack, ale możesz sobie tutaj również stworzyć
projekt na przykład simple, bardzo łatwo, wpiszesz po prostu vue init simple.
Natomiast ja wpiszę tutaj i zachęcam cię żebyś zrobił to razem ze mną, ale
to już ważne, żeby być w tym katalogu 51, bo sama globalna instalacja
jest niezależna od katalogu, ale teraz już jest ważne żeby tutaj być, wpiszemy
vue init webpack i przyjrzymy się temu, co nam to narzędzie oferuje.
Po pierwsze pytanie, czy chcę zainstalować to w folderze, w którym jestem. Wybieram yes,
czyli bezpośrednio w folderze, do którego już przeszedłem. Nie będziemy tutaj
tworzyć nowego katalogu. Project name 51, tutaj
jest opis automatycznie z git'a jest pobierany adres email
i teraz bardzo ważna rzecz. Na początku tego kursu mówiłem ci że mamy dwa rodzaje tak
naprawdę Vue. Jeden jest to runtime, czyli to wszystko co nam wykonuje cały kod
plus compiler do templatek, ale możemy również jeżeli będziemy
kompilować templatki na etapie build'u, co teraz będziemy robić, nie używać
kompilatora, czyli wybrać drugą opcję. Tutaj strzałkami sobie na klawiaturze przeskakujemy. Jeśli
tą opcję wybiorę to nie będę mógł moich komponentach tworzyć w ogóle templatek,
tak jak to robiliśmy do tej pory z użyciem tego elementu czy tej właściwości
w zasadzie, template, gdzie w template string'u to wpisywaliśmy, ale będziemy to mogli
robić w plikach z rozszerzeniem kropka vue i zobaczysz to już za moment, więc ja wybiorę
tę drugą opcję. Pytanie czy chcemy zainstalować Vue Router,
nie, aczkolwiek w jednej z kolejnych lekcji będziemy jeszcze z tego korzystać, ESlint
nie i tutaj jeśli chodzi o testy na tym się nie będziemy skupiać i na końcu tutaj wybiorę
jest, żebyśmy mogli wszystko zainstalować, czyli za nas to narzędzie
wykona npm install i to może chwilę potrwać, natomiast zaraz zobaczysz jaka
struktura nam się utworzy. Na pierwszy rzut oka może ona być przerażająca, ale
większość rzeczy, które tam są to są rzeczy do których wcale nie będziesz musiał zaglądać, więc
pokażę ci po prostu na co zwrócić uwagę i co nam się po prostu przyda i
w kolejnych lekcjach również zobaczysz jak możemy budować projekt w oparciu o
właśnie taką startową aplikację. Tutaj mamy napisane, że żeby
rozpocząć wystarczy wpisać npm run dev. Natomiast ja bym chciał teraz
przyjść do edytora i przejdziemy sobie do katalogu 51,
dokładnie tutaj ta aplikacja się utworzyła. Jest tutaj wiele rzeczy, natomiast
powiem ci od razu, że to co ciebie będzie interesowało to jest katalog src. Tutaj będziemy
tworzyć całą naszą aplikację, a pozostałe rzeczy to są rzeczy konfiguracyjne, na przykład
dla webpack'a, jeżeli znasz narzędzie webpack to będziesz mógł sobie tutaj
pewne rzeczy zmienić. Natomiast jeżeli nie, nie musisz tymi katalogami
się interesować zupełnie. Nasza aplikacja jest w katalogu src i jeżeli
byśmy zajrzeli do package json, są tutaj trzy zadania, dev, start oraz
build, start w zasadzie to jest samo co dev, więc mamy tutaj dev i build i dev
pozwoli nam uruchomić serwer developmencki z użyciem webpack-dev-server, gdzie
jeżeli coś zmienimy w pliku, tam będzie automatycznie to odświeżane będzie się bardzo wygodnie
pracować. Natomiast kiedy nasza aplikacja będzie już przygotowana do tego,
żeby ją wypuścić w świat to wykonamy sobie build i to nam stworzy już
dosłownie kilka plików tej naszej aplikacji gotowych do umieszczenia w internecie
natomiast na razie uruchomimy sobie dev, czyli wystarczy, że tak jak tutaj zasugerowano
wpiszemy npm run dev i powinien nam się taki serwer uruchomić.
Jak widzisz, otrzymaliśmy tutaj informację, że pod takim
adresem nasz serwer się uruchomił i po przejściu na taką stronę widzimy
aplikację Vue.js. Oczywiście nie musimy nic do tej strony dołączać
w formie zewnętrznego skryptu, jeżeli przejdziemy do Vue, tutaj. Możemy
wszystko sobie debugować, czyli aplikację, która już tutaj jest stworzona, ale
jak ona wygląda, zaglądnijmy sobie tutaj, assets, tutaj jest tylko logo to nam
jest niepotrzebne, nieistotne, istotny jest plik main.js, który
jest kompilowany na samym początku. Od niego zaczyna webpack i w
tym pliku za pomocą importów EcmaScript6, ważne żeby rozumieć jak to działa,
importowane jest Vue, bo Vue jest tutaj zainstalowane z użyciem npm
i w ten sposób się importuje, nie musimy dołączać skryptu do strony i tutaj
importowana jest też aplikacja z katalogu tego samego jest to app kropka vue
i właśnie w takich plikach Vue będziemy mogli pracować. Ważne jest to,
że tutaj nie możemy już korzystać na tych aplikacjach z template, tak jak
robiliśmy do tej pory, tylko musimy podawać funkcje renderującą, więc tutaj
jest funkcja, która przyjmuje funkcję, to jest funkcja strzałkowa w ES6 i
wywołujemy tę funkcję przekazując jej app i teraz pytanie co
jest w tym app, zobacz, tutaj mamy taką oto aplikację,
czyli wydawałoby się, że po zaimportowaniu w to miejsce, tu będzie jakaś dziwna rzecz,
która jest przekazywana w to miejsce, ale warto wiedzieć, że webpack korzysta z tak zwanych
loader'ów, więc w momencie kiedy importuje ten plik, przepuści go przez loader i
to wszystko zostanie zamienione na kod JavaScript odpowiednio i dopiero tutaj
zwrócone, więc jeżeli wiesz jak działa webpack to już wiesz teraz, że możesz nie
korzystać z narzędzia Vue CLI, ale skonfigurować sobie webpack'a sam z użyciem
Vue Loader'a. Nie będziemy jednak tego robić, pokażę ci natomiast jak wygląda
struktura takiej aplikacji. Do tej pory tworzyliśmy templatkę albo bezpośrednio w
drzewie DOM albo wpisywaliśmy ją elemencie, we właściwości
template. Teraz będziemy pracować inaczej, mamy pliki gdzie mamy
rozszerzenie Vue i tak będziemy tworzyć całą naszą aplikację. Natomiast, aby
taki plik mógł być odpowiednio podświetlony, jak widzisz mój edytor wie gdzie jest
skrypt, gdzie są style i tak dalej, to musisz do swojego edytora doinstalować
sobie odpowiednie kolorowanie składni. Jeżeli wpiszesz w internecie nazwę
twojego edytora Vue Syntax Highlightning to na pewno znajdziesz jak
to zrobić. Zatem to wszystko co do tej pory wpisaliśmy w komponencie,
kiedy robiliśmy na przykład Vue komponent i podawaliśmy obiekt konfiguracyjny
będziemy mieli w tym miejscu, to jest dokładnie ten obiekt tutaj. Eksportujemy go z tego
pliku za pomocą zapisu ES6. Tu możemy jeszcze inne rzeczy zaimportować
i wstawić jako components. Bardzo ważna rzecz, templatka
do tego konkretnego komponentu jest tutaj w elemencie template, czyli wszystko
co tworzyliśmy do tej pory jako templatki będziemy stawiać to miejsce i co
ciekawe możemy również dodać style, które odpowiednio przez webpack'a są z użyciem
css-loader później zbierane i będą wstawiane na stronie, więc
tutaj dużo za nas webpack robi jeżeli rozumie się to narzędzie to dużo łatwiej się pracuje
i zobacz co robi ta aplikacja. Ona sobie importuje Hello World z components hello world
i tutaj mamy taki oto plik. Cały jego template i jego logika
jest w tym miejscu, tego komponentu tutaj dodajemy wszystko, czyli methods props i tak
dalej i style, które mogą być, mogą nie być, zobaczysz to jeszcze w lekcjach kolejnych. Natomiast fajne
jest to, że po tym serwerze, który uruchomiliśmy, możemy coś tutaj zmienić
i jeżeli ja zapiszę to to na stronie się automatycznie odświeża. Czasami nawet przeglądarka
nie jest przeładowywana, ale działa tutaj tak zwany hot module reloading i jest to
wstrzykiwane na stronę, więc dużo prościej się z tym pracuje. Dodatkowo jeszcze
warto wspomnieć, że to wszystko jest kompilowane do kodu EcmaScript5, więc możemy korzystać z
takich nowoczesnych zapisów ES6 i nie martwić się o to, czy to będzie działać w starszych
przeglądarkach. To wszystko za nas robi webpack skonfigurowany z użyciem Vue CLI
i wiem, że to jest dużo jak na początek, jeżeli jeszcze z tym nie pracowałeś,
ale pokażę ci w lekcji kolejnej jak możemy counter, czyli nasz komponent,
stworzony wcześniej w taki sposób przepisać żeby go tutaj po prostu umieścić i
żeby to wszystko działało poprawnie, więc zapraszam cię do kolejnej lekcji gdzie będziemy
ten temat kontynuować.