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
Do tej pory, po naszej aplikacji nawigowaliśmy z użyciem linków wygenerowanych z router-link.
Na przykład w ten sposób. Natomiast warto wiedzieć, że możesz również przypisać np. zdarzenie kliknięcia
do dowolnego elementu i programatycznie, czyli z twojego kodu, po prostu, wygenerować taką nawigację,
czyli mam na myśli wygenerować akcję nawigacji, czyli zmienić, po prostu stronę. Zmienić ten adres na pasku
i teraz będziemy chcieli to zrobić po przejściu do edytuj. Dodamy sobie przycisk, który pozwoli nam wrócić
o jeden krok wstecz i pokaże ci na to kilka sposobów, czyli przejdziemy tutaj do src components user
UserEdit.
Chciałbym w tym miejscu tutaj, dodać sobie przycisk, button btn, primary go nazwiemy.
I tutaj napiszemy Powrót.
Na przykład w ten sposób, ok i będę chciał do tego przycisku przypisać zdarzenie kliknięcia.
Ale zobaczmy najpierw jak on się tutaj wygenerował. Wygląda to w ten sposób, że wypadałoby tutaj coś jeszcze
dodać chociaż style nie są najważniejsze.
Ok.
Teraz ważne jest to, że oprócz tego, że na każdej instancji kiedy korzystamy z VueRouter, mamy dostęp do
this.$route, to oprócz tego mamy dostęp również do this.$router i to jest dokładnie ta instancja, którą
mamy tutaj skonfigurowaną.
Czyli pisząc this dolar router, mam dostęp dokładnie do tego, co jest tutaj utworzone.
OK i skoro this dolar router, to tutaj prosto w kodzie będzie to samo, dolar router, więc mogę przypisać zdarzenie kliknięcia
i powiedzieć np. router-go minus 1, tutaj podajemy n, a n będzie oznaczało ile kroków do przodu lub
do tyłu.
Natomiast nie zawsze możemy zrobić minus 1, bo jeżeli bezpośrednio wejdziemy na taki widok, to niestety
nam się to nie uda.
No ok, ale zobaczmy powrót.
I tutaj nam to powróciło.
Czyli w ten sposób to zadziałało.
Zobaczmy.
Powrót i to działa.
Natomiast oprócz go, mamy jeszcze inne metody. Tutaj oczywiście mógłbyś opisać metodę. Wstawić ją do
methods i w niej robić this router. Natomiast ja to robię tutaj bezpośrednio.
Ważną metodą jest metoda push, która pozwala nam przejść do jakiejś ścieżki.
I tutaj możemy podać od razu tą ścieżkę czyli np. mógłbym tutaj wpisać przejdź do strony głównej albo
przejdź do users.
Sprawdźmy.
Tutaj widzę tylko, że powinno to tak wyglądać.
Ok.
Przechodzimy do Edycji, powrót, przeszło nam do users.
Możemy również podać tutaj obiekt, w taki sposób, czyli napisalibyśmy tutaj path i tutaj byśmy podali users.
Ok.
Jeszcze raz zobaczmy, jak widzisz, też to działa.
Tutaj będzie można na wiele sposobów podawać ścieżkę, do której chcemy przejść, ale te które Ci pokazałem,
dwa na razie ci wystarczą.
Co ważne, jeżeli chciałbyś do tej ścieżki dodać jakiejś query, to można to zrobić w ten sposób,
query, tak byśmy powiedzieli np. hello, to jest witam, jak zrobiliśmy to wcześniej.
Dla przykładu, po prostu. Jeżeli teraz tutaj kliknę, to przejdziemy do users i query zostanie automatycznie uzupełnione.
Więc, w razie czego, gdyby to było potrzebne, to pamiętaj o tym, że taka możliwość istnieje.
Natomiast tu będzie można podawać jeszcze inne rzeczy.
O tym powiemy sobie przy nazwanych ścieżkach.
Natomiast ostatnia ważna uwaga jest taka, że to wszystko, co mogę podawać tutaj, mogę podawać również przy
linkach, które generowaliśmy z użyciem router-link, czyli tutaj w tym prop, atrybucie
to, mogę podawać dokładnie to samo, co podaje do router push, dlatego że te linki tak naprawdę później
są zamieniane na wywołania router push, czyli tutaj w tym atrybucie
to, pamiętaj dokładnie to samo, co możesz podawać w router push i znajdziesz to również w dokumentacji.
Ok.
To by było tyle. Pamiętaj, że możesz bez problemu z poziomu kodu JavaScript również wykonywać operacje
na routerze, nie musisz do wszystkiego generować linków poprzez router-link.