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
W tej lekcji, na przykładzie aplikacji, którą tworzyliśmy w kursie Vue.js od podstaw.
Pokażę ci, w jaki sposób, możemy pozyskiwać dane zapisane w tym naszym globalnym storze.
Natomiast, jeżeli nie przerabiałeś kursów Vue.js od podstaw, to tutaj zatrzymaj się na chwilkę i zerknij sobie
do kodu tej aplikacji.
Ona jest na tyle nieskomplikowana, że zakładam, że przystępując do tego kursu, wszystko co tutaj pokazałem
będzie dla Ciebie jasne.
Natomiast, pokrótce w aplikacji, wygląda to tak, że będziemy chcieli mieć użytkowników, których na razie
tutaj wpisałem w ten sposób, czyli pobieramy ich sobie za pomocą required, a więc tak jakbym tutaj wpisał ręcznie tą
tablicę. Tych użytkowników będę chciał przekazywać do komponentu UserList oraz wyświetlam taką listę
ol, czyli UserList, to jest cały ten komponent, a ta lista jest wyświetlana w tym miejscu.
Teraz ten komponent UserList, tak naprawdę jest taką tabelką, jak możesz zobaczyć, która każdy wiersz, będzie
generowana na podstawie komponentów UserItem i będzie mu przekazywała odpowiednie informacje, więc musi sobie ten
komponent zaimportować i następnie oczywiście go wyrenderować.
No i tutaj przyjmujemy props user, users i mamy to dokładnie tutaj, w tej naszej aplikacji. To jest
właśnie to props i najbardziej skomplikowany jest tutaj komponent UserItem, a potem możesz zobaczyć że tutaj
jeden wiersz po prostu generujemy.
Natomiast jest tutaj trochę kodu, z tego powodu, że możemy kliknąć Edytuj i wtedy ten widok się zamienia.
Jeżeli mamy Edit Mode, to taki input. Jeżeli nie, to wyświetlam, po prostu, te dane i te dane tutaj można
aktualizować.
Jeżeli zmienię wiek na 34, tutaj również nam się to zmieni.
Natomiast teraz te dane nie są w scentralizowanym miejscu, będę chciał je przenieść do store'a, a w kolejnych lekcjach
będziemy jeszcze te aplikacje, troszeczkę rozbudowywać.
Ok, więc przyjrzyj się temu na spokojnie i myślę, że nie ma tutaj nic skomplikowanego, więc teraz ja będę
chciał zamiast tego, żeby w tej aplikacji tutaj mieć zapisanych tych użytkowników, to będę chciał ich
pobrać z naszego store'a, który w lekcji poprzedniej w ten sposób skonfigurowaliśmy.
Mamy ich teraz tutaj w tym jednym zcentralizowanym miejscu, więc usunę cały data, dla tej aplikacji
i teraz jak tutaj, pod users, podstawić to, co jest w tym storze.
Otóż w każdej metodzie tutaj, będziemy się mogli odwołać do this.$store, a więc tutaj jest
tutaj jest bezpośrednio $store, następnie state, następnie users, czyli tak jak mamy tutaj.
I to jest nasz store, tutaj mamy state i w środku users.
Jeżeli tutaj zrobię to samo,
to powinno nam to również zadziałać.
Zobacz, efekt jest dokładnie taki sam.
Ale żebyśmy nie musieli się tutaj powtarzać, w taki sposób, to bardzo popularną praktyką jest tworzenie
computed property o nazwie user, users
i ona nam zwróci właśnie this.$store.state.users, czyli teraz w szablonie, tutaj gdzie korzystamy z
users.
Tak naprawdę będzie wykorzystywana computed property. W jednej z kolejnych lekcji pokaże ci jak możemy
automatycznie je tworzyć, abyśmy nie musieli dla każdej właściwości z naszego store'a tworzyć takiej
computed property, bo tutaj oczywiście może być dużo więcej tych rzeczy.
Na razie jednak zostawimy to w takiej formie, jak widzisz, wszystko działa poprawnie.
Natomiast, jeżeli chodzi o samą edycję, ona również zadziała, ale nie powinniśmy w ten sposób tego robić
o czym powiemy sobie w jednej z kolejnych lekcji, bo teraz gdyby się tutaj temu przyjrzał to mamy v-model przypisany
do tego użytkownika.
I to wszystko działa, ale modyfikujemy ten store bezpośrednio, a powinniśmy to robić za pomocą mutacji.
Natomiast o tym powiemy sobie później, teraz warto żebyś zapamiętał z tej lekcji tyle, że w dowolnym komponencie,
w dowolnym miejscu twojej aplikacji, możesz napisać this.$store.state i będziesz miał dostęp do danych, które
będą tutaj zapisane.
Więc będzie dużo łatwiej nad tym pracować.
Co ważne, jeżeli te dane zmodyfikujesz w całej aplikacji, gdzie było z nich korzystane, będzie to odzwierciedlone,
natomiast jak je modyfikować, to pokaże ci już niebawem.