Techniki Zaawansowane
5 godz. 11 min · Vue.js · Full-stack i Programowanie
Piotr PalarzWeb DeveloperKurs, który masz przed sobą, to kontynuacja wydanego wcześniej kursu Vue.js od Podstaw. W pierwszym kursie omówione zostały najważniejsze koncepcje pracy z Vue, a w tym materiale poruszamy już bardziej zaawansowane tematy. Przede wszystkim skupimy się na pracy z użyciem nowoczesnego workflow, co da nam niezwykłą swobodę tworzenia aplikacji internetowych. Jeśli zatem znasz już podstawy pracy z tym frameworkiem i chcesz wskoczyć na kolejny poziom wtajemniczenia, ten kurs jest zdecydowanie dla Ciebie. A co znajdziesz w materiale?
Na początku zobaczysz, jak szybko tworzyć pliki startowe do nowej aplikacji z użyciem narzędzia vue-cli. Omówimy możliwość dzielenia kodu na wiele plików, tworzenia szablonów, a także wykorzystywania bezpośrednio funkcji renderującej, do której zamieniane są na etapie builda wszystkie szablony.Zobaczysz również czym są i jak pracować z komponentami funkcyjnymi i tzw. mixinami, które pozwolą reużywać raz napisany fragment kodu.
Przepływ informacji to bardzo ważny temat w każdej aplikacji internetowej. Vue oferuje kilka sposobów na to, aby komponenty mogły się ze sobą komunikować. Ich omówienie zaczniemy od najprostszych technik, które świetnie sprawdzają się w wielu przypadkach. Następnie rozszerzymy możliwości instancji Vue w ten sposób, aby wszystkie komponenty miały dostęp do scentralizowanego miejsca, gdzie przechowywany będzie stan aplikacji.Tam jednak, gdzie aplikacja wymaga zarządzania większą ilością danych jednocześnie, powyższe techniki mogą być niewystarczające. Z tego powodu, podobnie jak w innych frameworkach, Vue posiada oficjalny wzorzec oraz bibliotekę do zarządzania stanem aplikacji. Rozwiązanie to nazywa się VueX i w kursie zostanie ono dokładnie omówione. Zobaczysz zatem jak skonfigurować tzw. store, jak przechowywać w nim dane, jak je wyświetlać w widokach, aktualizować za pomocą tzw. mutacji czy pracować z nimi wykorzystując akcje. Przekonasz się, że początkowa większa ilość pracy, aby wszystko skonfigurować, w pewnym momencie zaczyna się opłacać.
Tworzenie nowoczesnych aplikacji typu SPA (Single Page Application) nie może się obejść bez zmian widoków. Dobrą praktyką jest, aby wraz z takimi zmianami, aktualizowany był również pasek adresu. Wykonanie takiego zadania umożliwiają nam tzw. routery. Vue posiada oficjalny dodatek o nazwie vue-router, który w tym kursie dokładnie omówimy.Zobaczysz jak dołączyć router do swojego projektu, a także jak konfigurować ścieżki. Poruszymy tematy takie jak generowanie odnośników, dynamiczne parametry, tworzenie zagnieżdżonych ścieżek czy nawigacja z poziomu kodu JavaScript. Dowiesz się również, jak tworzyć tzw. guardy, które umożliwią lub zablokują możliwość wyświetlania wybranego widoku, np. w zależności od tego czy użytkownik jest aktualnie zalogowany.
Trzecim, po zarządzaniu stanem aplikacji i wykorzystaniu routingu, komponentem, który niezbędny jest do tworzenia aplikacji napędzanych danymi, jest możliwość wysyłania zapytań HTTP.Tę czynność umożliwi nam bardzo popularna, acz niezależna od Vue biblioteka axios. Zobaczysz jak za jej pomocą pobierać i wysyłać dane. Aby jednak jak najwygodniej pracować z tym rozwiązaniem, połączymy axios z Vue, udostępniając tak naprawdę jej metody wewnątrz każdego komponentu.
W jednym z rozdziałów kursu podejmiemy temat walidacji formularzy. Zobaczysz jak z pomocą popularnego pluginu dla Vue, robić to w bardzo prosty sposób.Omówimy różne funkcje walidujące, które umożliwią sprawdzenie poprawności pól tekstowych, radio czy checkboxów. Zobaczysz jak w łatwy sposób wyświetlać komunikaty o błędach i warunkowo zmieniać wygląd pól. Nie zabraknie również informacji o asynchronicznej walidacji, która pozwoli nam na żywo sprawdzać czy wpisany adres email jest dostępny czy też nie.
Kurs ten oczywiście to nie tylko niezbędna teoria, ale także praktyczne przykłady. Aby jak najlepiej poznać omawiane techniki, wykorzystamy je do stworzenia ciekawych aplikacji.Pierwszą z nich będzie konfigurator produktu, który umożliwi użytkownikowi wybór podzespołów zamawianego komputera. Każdy taki wybór będzie wpływał na końcową cenę, która będzie na bieżąco aktualizowana. Po wybraniu wszystkich opcji, dane prześlemy na serwer. To projekt który pokaże Ci jak przechowywać dane z użyciem VueX, a także jak na ich podstawie wyświetlić widok i napisać logikę.Innym projektem, który wykonamy, będzie Quiz. To aplikacja, gdzie użytkownik odpowiadał będzie na serię pytań pobranych z serwera, a do wyboru będą 3 odpowiedzi. Po przejściu przez wszystkie pytania, wyślemy do serwera zapytanie, a ten w zamian zwróci nam listę poprawnych odpowiedzi. Dzięki temu pokażemy użytkownikowi, gdzie miał rację, a gdzie popełnił błąd. Aplikacja ta wykorzystywać będzie wszystkie najważniejsze techniki, tj. VueX, routing, a także Ajax.
Kurs ten jest dla wszystkich osób, które czują się już swobodnie w pracy z frameworkiem Vue. Jeśli zatem masz już solidną wiedzę podstawową lub przerobiłeś kurs Vue.js od Podstaw, to zdecydowanie jesteś gotów na poszerzenie swoich umiejętnośći w pracy z tym frameworkiem. Co ważne, doświadczenie w pracy z innymi frameworkami JavaScript nie jest tutaj wymagane, a jedyne co będzie bardzo pomocne, to znajomość nowej składni EcmaScript 6.
Vue.js 2.x.x
Tą lekcją rozpoczynamy poznawanie Vuex, a jest to jak widzisz State Management Pattern, czyli tak naprawdę
jest to pewien wzorzec zarządzania stanem aplikacji, ale dodatkowo biblioteka w jednym, czyli będziemy
mogli zainstalować i skonfigurować z Vue.
Natomiast w tej lekcji, króciutko, chciałbym powiedzieć jak to, mniej więcej, wygląda.
Tutaj jest naprawdę dobrze opisane na stronie dokumentacji, ale jest pokazane jak wygląda przeciętna
aplikacja, przeciętny komponent i zastanówmy się na przykładzie tego, co do tej pory robiliśmy.
Mamy jakiś state, czyli stan i to jest to, co mamy u siebie w data, w danym komponencie. Mamy widok, który
tak naprawdę odzwierciedla nam te dane, które są w data podane i za pomocą widoku użytkownik może dokonywać
różnych akcji, czyli jeżeli kliknę przycisk, to jakaś akcja się wykona.
No i ta akcja może zmodyfikować się np. za pomocą metody state. Kiedy zmodyfikuje nasz stan, no to wiemy,
że to będzie automatycznie reaktywnie, odzwierciedlone w widoku i to fajnie działa w obrębie np. jednego
komponentu. Natomiast widziałeś, że jeżeli mamy wiele komponentów, to musimy np. emitować zdarzenia po
to, aby komponent wyżej na nie nasłuchiwał i zmienił coś w swoim stanie i swoim widoku to odzwierciedlił.
Natomiast chcielibyśmy zrobić tak, że mielibyśmy jeden zcentralizowany taki store, takie miejsce, gdzie przechowujemy
różne dane, powiedzmy będzie to nazwa produktu, może cena tego produktu i nieważne z którego komponentu,
nieważne jak bardzo byłby on zagnieżdżony.
Chciałbym móc np. zmienić tę nazwę albo zmienić tę cenę i w każdym innym miejscu w każdym widoku, gdzie
tylko z tego korzystaliśmy,
chciałbym, żeby to było odzwierciedlone.
Możemy to zrobić z użyciem Vuex'a.
Jak widzisz, tutaj już jest schemat dużo bardziej zaawansowany.
Ale spróbujmy na moment się nad nim zastanowić.
Otóż w Vuex'sie będziemy mieli jeden stan główny, to będzie taki nasz source of true, czyli tam będzie po prostu
wszystko, co nas interesuje.
Wszystkie nasze dane, te które oczywiście chcemy, żeby były dzielone ze wszystkimi komponentami, bo każdy
komponent będzie mógł mieć jeszcze swoje indywidualne dane. Więc mamy w jednym miejscu te dane i teraz
możemy je oczywiście wyświetlać w różnych komponentach,
czyli mamy, powiedzmy, tą nazwę produktu na samej górze i w dowolnym komponencie będę mógł z tej nazwy produktu
skorzystać.
Natomiast jeżeli będę chciał ją zmienić, to ja nie mogę bezpośrednio zmienić tego stanu tak jak to robiliśmy
do tej pory poprzez np. this, powiedzmy, product name i nowa nazwa. Ja będę musiał zrobić coś zupełnie innego.
Mianowicie będę musiał uruchomić tak naprawdę mutacje i ta mutacja, to będzie funkcja, która będzie mogła
zmodyfikować stan.
Natomiast, zazwyczaj robi się jeszcze jeden krok, a mianowicie z naszego widoku np. po kliknięciu na jakiś
przycisk czy po wpisaniu czegoś do pola, będziemy uruchamiali akcję.
Akcja będzie nam komutowała mutacje, a ta mutacja dopiero będzie zmieniała stan i akcje są potrzebne po
to, że może być tak że będziemy chcieli pobrać najpierw jakieś dane z serwera i dopiero kiedy je mamy,
komutujemy mutacje.
Zmienia się stan i odzwierciedla się to wszędzie i wiem, że teraz wygląda to na skomplikowany diagram,
natomiast w kilku kolejnych lekcjach zobaczysz, że wcale nie jest aż tak skomplikowane.
Natomiast mamy trochę więcej konfiguracji, żeby korzystać z tego Vuex'a. Troszkę więcej będziemy musieli początkowo
napisać.
Natomiast wszystkie te poszczególne komponenty, które tutaj widzisz, postaram się dokładnie wytłumaczyć.
Ważne tylko, aby zapamiętać że Vuex wcale nie jest potrzebny w każdej aplikacji, ale jeżeli mamy troszkę
bardziej skomplikowany, troszkę większą aplikację, to na pewno nam się przyda, więc rozpoczniemy po prostu
przygodę z tym narzędziem od kolejnej lekcji.