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 wykonamy sobie na koniec naszego projektu jeszcze build produkcyjny i
powiem ci, że jeżeli w ostatnich lekcjach to, co robiliśmy to było dla ciebie coś
nowego, mam na myśli nie samo Vue, ale ta praca z webpackiem i wszystkie te rzeczy, ten
Dev Server, to na pewno będziesz zadowolony z tego co zobaczysz za moment,
w jaki sposób to nam jeszcze bardziej ułatwia pracę. Natomiast jeżeli do tej pory pracowałeś z takimi
narzędziami być może nie będziesz zaskoczony tym co za moment zobaczysz, ale
zanim wykonamy ten build, to chciałbym jeszcze nawiązać do tego, że gdybyś
tworzył swoje aplikacje z użyciem Vue tak jak robiliśmy przez większą część tego kursu i nie
ma w tym nic złego, bo możesz Vue podłączyć do swojej strony jako skrypt, on nie zajmuje zbyt
wiele, więc jak najbardziej może rozszerzać swój kod html, dodawać do
niego różne rzeczy. To wtedy zadbaj o to, że kiedy ta aplikacja ma być już gotowa
to żebyś nie podpinał wersji developmenckiej biblioteki, ale tak
jak tutaj jest napisane vue min js. Wtedy będzie to zminifikowana
wersja, która nie będzie miała ostrzeżeń w konsoli i wielu innych rzeczy. Druga
sprawa jest taka, że gdybyś korzystał z webpack'a i sam skonfigurował sobie Vue Loader,
bo mówiłem ci, że jest to możliwe. Nie musisz korzystać z Vue CLI, to wtedy
ważne jest to, żeby przy procesie produkcji podać mu zmienną,
taką środowiskową proces env node env ustawioną na production. Można
to w webpack'u zrobić dziecinnie prosto. Właśnie w ten sposób. Jeżeli coś
takiego zrobimy, to wtedy w każdym pliku, który będzie tutaj przypuszczany
będzie dostępna coś takiego jak proces env kropka node env na wartość
production i dzięki temu pewne rzeczy będą mogły być wycięte. To dla
nas robi Vue CLI w prekonfigurowanym webpack'u, więc nie musimy tego robić,
ale gdybyś sam korzystał z webpack'a pamiętaj, że to jest bardzo ważne, aby to
dodać. My natomiast teraz wykonamy sobie build'a naszej aplikacji. Ona
działa poprawnie, jeżeli byśmy zrobili tutaj npm run dev,
to oczywiście powinno się wszystko bez problemu skompilować, uruchomić
tutaj na tym serwerze, więc sprawdzimy czy nam to zadziała. Jak najbardziej
tak, nasza aplikacja działa, przekierowuje nas poprawnie tutaj ten router, więc
teraz będę chciał ten serwer zatrzymać i będę chciał wykonać build'a. Jest
to bardzo proste, dlatego że w pliku package json jest skonfigurowane zadanie build,
które wykonuje build js z tego katalogu, więc gdybyś
chciał zerknąć co tam się dokładnie dzieje, możesz zobaczyć tutaj to wszystko jest. Wystarczy
zatem, że będąc tutaj gdzie całą naszą aplikację tworzyliśmy, wpiszemy
npm run build i chwileczkę zaczekamy i okaże
się, że z całego tego bałaganu, który może przytłaczać tych wszystkich plików, zostanie
stworzony katalog dist, w którym tych plików będzie bardzo mało. Zobaczmy,
przejdziemy sobie do dist i zobaczymy. Jeśli zrobię tree,
to pokazuje nam jakie pliki tam się znajdują. Mamy nasz główny index, pliki
statyczne. Jest to jeden plik css'owy, jego mapa, która nie jest konieczna i pliki
JavaScript'owe. Jeden to jest nasza główna aplikacja, a drugi jest to manifest
i tutaj jeszcze vendor. Ten vendor jest dla nas istotny, bo do niego webpack wrzuci
sobie różne rzeczy takie jak na przykład samo Vue, a do
naszej aplikacji tylko nasz kod. Niemniej jednak nie jest to takie super istotne. Ważne, że
możemy z tego katalogu uruchomić sobie na przykład http server
i pod tym adresem wtedy uruchomimy naszą aplikację, ale
już produkcyjną, czyli będzie to zminifikowany kod. Zobacz, tak wygląda
cały jej index html i gdybyśmy sobie zajrzeli do pliku naszej
aplikacji, wygląda to w ten sposób, czyli to wszystko jest połączone te wszystkie
moduły, które do tej pory pisaliśmy, one zostały ze sobą połączone w fajny
sposób, te które są tutaj, te komponenty. Dodatkowo wszystko
zostało przekompilowane do EcmaScript5. No i również
to co jest najlepsze, to oczywiście te templatki, które tutaj wpisywaliśmy już Vue
nie potrzebuje ich kompilować, one zostały zamienione na funkcje JavaScript'owe i znajdują
się w tym wynikowym pliku tutaj gdzieś, zapewniam cię i ta nasza
aplikacja może działać i taka aplikacja nadaje się do stawienia na serwer. Zobacz,
że ona jak najbardziej działa poprawnie i zawiera w sobie wszystko. Axios, Vue Router, Vue
i wszystkie inne rzeczy. Cały nasz kod CSS. Ten kod CSS
nie jest teraz już wstrzykiwany tak jak ci to pokazywałem tutaj. Oprócz
tego, który my mamy ręcznie wpisany, ten kod został wyrzucony
tutaj do pliku CSS'owego, więc jeżeli sobie w modułach cokolwiek wpisywałem tutaj w CSS, to
wszystko zostało połączone do jednego pliku i to wydaje się bardzo magiczne, ale
jeżeli byś poznał dobrze webpack'a to wszystko to możesz krok po kroku sam
skonfigurować i to by było tyle jeżeli chodzi
o ten projekt. Mam nadzieję, że on ci się podobał, że wielu rzeczy się nauczyłeś
i że Vue przypadło ci do gustu, ale o tym porozmawiamy sobie jeszcze w ostatniej lekcji tego
kursu.