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 pokażę ci w jaki sposób możemy przypisać reguły walidacji.
Natomiast to co jest najbardziej istotne to musimy najpierw powiązać nasze pola input oraz inne pola
z modelem czyli to co robimy zazwyczaj jeżeli np. tutaj mamy name czyli imię i nazwisko to dajmy sobie
v-model name.
Zaraz będziemy to musieli uzupełnić tutaj zróbmy v-model e-mail.
Bez tego też nie będzie co jest ważne działać Vuelidate v-model country i jeszcze gdzie mamy hasło to zostawimy sobie, bo
w jednej z kolejnych lekcji pokażę ci jak hasła porównywać.
Tutaj zrobimy v-model terms i będziemy musieli wszystko tutaj dodać więc data będzie to oczywiście funkcja
zwracająca obiekt bo tak to jest komponentach i dodamy pustą wartość e-mail również ma początkowo pustą
wartość, następnie mieliśmy country też pusta wartość ona zostanie ustawiona co jest ważne bo tutaj w
tym country jeden z option ma taką wartość pustą więc on zostanie domyślnie zaznaczony.
Bo to co jest tutaj jest najważniejsze, nieważne czy byśmy tutaj do któregoś z tych pól pisali np. atrybut
selected.
I ostatnia rzecz to jest terms czyli checkbox ustawiamy go na false.
Po odświeżeniu tutaj powinniśmy to wszystko zobaczyć i zrobiliśmy v-model więc przy wpisywaniu jak widzisz
od razu jest to uzupełnione.
Jeżeli checkbox zmienimy zmienia się również jego wartość.
Natomiast teraz chciałbym sprawić żeby np. ten checkbox był wymagany żeby coś musiało być wybrane a
np. te dwa pola żeby miały minimum dwa znaki.
Więc spróbujmy to zrobić z użyciem Vuelidate.
Otóż będziemy musieli sobie tutaj dodać coś takiego za pomocą tej mixiny
to będzie rozumiane lub za pomocą globalnej konfiguracji gdybyś zrobił Vue.use Vuelidate.
Musimy sobie tutaj zrobić coś takiego jak validations i jest to obiekt w którym podamy sobie na przykład
name i to się odwołuje dokładnie do naszego v-model i do tej właściwości która jest tutaj.
Jeżeli napiszemy name to tutaj mogę napisać że to pole ma być wymagane.
Mogę napisać required: required.
No właśnie ale co to będzie.
Musimy to zaimportować najpierw, więc tutaj musimy zrobić import i zaimportować sobie walidatory które nas interesują
znajdziesz na stronie Vuelidate
Jednym z nich jest required.
Innym jest minLength
który też nam się przyda,
from vuelidate następnie lib i następnie validators, ok i teraz jeśli takie pole oznaczę jako required
to powinno być ono wymagane, jeżeli nie będzie żadnego błędu to znaczy że to działa natomiast nigdzie
nie widzisz co to znaczy że to pole jest wymagane, mogę tutaj wpisywać dowolne rzeczy i tym się zajmiemy
w jednej z kolejnych lekcji.
Natomiast ważne jest żeby wiedzieć że korzystając z Vuelidate mamy dostęp do this dolar v i tam jest
taki specjalny obiekt więc ja spróbuję go teraz tutaj wyświetlić w takim elemencie pre.
Zróbmy sobie tutaj $v. On się pojawił i dokładnie tutaj jest to wszystko, co nas interesuje czyli
mamy name required false, invalid true.
Zauważ że to pole jest niepoprawne bo jest nie uzupełnione. Jeżeli je uzupełnię to tutaj nam się to zmieni, invalid ma
już wartość false a więc na tej podstawie będziemy mogli określać czy coś jest poprawne czy też nie.
Natomiast zajmiemy się tym w jednej z kolejnych lekcji.
Ja tutaj jednak oprócz required chciałbym powiedzieć że ma być minimum minLength powiedzmy dwa znaki.
Jeżeli zrobimy coś takiego,
ok tutaj musielibyśmy zrobić minLength w ten sposób i następnie jeszcze raz minLength
2.
Ok jeżeli to zrobimy w ten sposób to to pole powinno wymagać przynajmniej dwóch znaków, zauważmy
jest niepoprawne, wpisze jeden.
Nadal jest niepoprawne, wpisze 2 już jest poprawne, więc możemy sobie takie walidatory przypisywać i zróbmy podobną
rzecz dla e-mail.
Natomiast jeżeli chodzi o e-mail to w zasadzie nie będziemy robić minLength tylko sobie zaimportujemy
walidator e-mail i wstawimy go po prostu w to miejsce, zobaczymy czy to będzie miało sens.
E-mail jest niepoprawny.
Wpiszmy sobie tutaj jakąś wartość tu widzisz, że nawet nie są podświetlane, ale to przez przeglądarkę a
nie przez żaden dodatek Vuelidate.
Ale wpiszmy poprawny adres e-mail i zobaczmy teraz.
E-mail ma wartość true, jeżeli bym usunął domenę zobacz mamy wartość false czyli mamy invalid tutaj true
ok.
Wpiszemy poprawną domenę nie jestem pewny czy tam wyświetlało się to tak jak powinno. Teraz
jeżeli zobaczymy e-mail invalid, jest false, zgadza się czyli teraz jest po prostu wpisany poprawny adres e-mail.
Jeżeli chodzi o select też będziemy chcieli to zrobić select country.
Więc tutaj po prostu będę chciał zrobić required.
Więc to pole jest wymagane i teraz jeżeli zerkniemy sobie to country ma wartość invalid bo jest niepoprawne.
Jeżeli cokolwiek wybierzemy ta wartość powinna się zmienić.
Zobaczmy invalid przy country ma wartość false natomiast to co jest bardzo ważne tutaj to jak widzisz tutaj
to $v jest reaktywne czyli się zmienia i dzięki temu będziemy mogli w widokach naszych sprawdzać
pewne błędy i na tej podstawie wyświetlać sobie różne klasy czy np. różne błędy tutaj pokazywać.
Ok i na koniec jeszcze zajmiemy się ckeckboxem więc zrobimy rzecz podobną.
Będę chciał powiedzieć że terms jest wymagany i teraz jeśli zjedziemy na sam dół terms nie jest poprawny.
Zaznaczamy i teraz terms już ma wartość false czyli jest poprawny OK.
To tyle jeżeli chodzi o te reguły walidacji. Znajdziesz je tak jak wspomniałem na stronie Vuelidate,
ale już widzisz w jaki sposób możesz tutaj określić jak to powinno wyglądać.
Natomiast jeśli chodzi o wyświetlanie błędów to tym zajmiemy się w lekcji kolejnej.