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 pracowaliśmy z naszym routerem używając hash'a i nie ma w tym nic złego,
dla większości aplikacji natomiast wspomniałem ci już wcześniej, że możemy ustawić, aby tutaj nie było tego
hash'a, tylko normalnie ukośnik jakiś adres i to jest możliwe z użyciem HTML5 History API.
Więc jeśli kiedykolwiek miałeś do czynienia z tym API, to powinieneś wiedzieć jak ono działa.
Natomiast jeżeli nie, to również nie jest to aż tak istotne żebyś dokładnie wiedział jak to API jest
skonstruowane.
Natomiast pokażę ci jak ten tryb włączyć i co się z nim wiąże.
Przede wszystkim przejdziemy to src, store, w zasadzie router i tutaj, gdzie mamy router, gdzie tworzyliśmy
new VueRouter, będę chciał żebyśmy przekazali sobie jeszcze jedną opcję route, przekazujemy, ale oprócz tego przekazujemy
sobie coś takiego jak mode i ustawiamy to na history. Zobaczysz jaka będzie różnica po odświeżeniu tej
strony, usuńmy sobie tego hash'a
i zobacz, wczytał nam się główny komponent, a tutaj nie pojawiła się żadna ścieżka.
Jeżeli przejdziemy do użytkowników, mamy ładny URL users, czyli właśnie tutaj HTML5 History API działa.
Kiedy klikamy wstecz, również będzie wszystko, tak jak być powinno.
Podgląd, zauważ. Wstecz, Edytuj, również jest w porządku, więc mógłbyś zapytać - jaki jest tutaj problem? Otóż,
problem jest taki, że jeżeli ktoś przejdzie pod adres twojej strony i od razu pod taką ścieżkę to przeglądarka
nie będzie wiedziała, że tutaj chodzi o adres, który ma być jakby skonstruowany z użyciem History API.
Tylko przeglądarka standardowo wyśle takie zapytanie do serwera. Jeżeli twój serwer nie ma takiej ścieżki,
to zwróci błąd 404 i podobnie będzie jeżeli ktoś odświeży. Jeżeli tutaj sobie przejdziemy jest to manipulowane
z użyciem JavaScript'u, ale jeżeli ktoś teraz odświeży, to przeglądarka spróbuje do serwera wysłać zapytanie
pod ukośnik users
i to może zwrócić 404. Tutaj jeżeli odświeżę, to okaże się, że wszystko działa.
Ale to wynika z tego, że Webpack Dev Server, który nam serwuje tę stronę, działa w ten sposób, że jeżeli przejdziemy
pod ścieżkę, która nie istnieje, to on tak czy siak zwraca nam ten główny adres. Natomiast na twoim serwerze
domyślnie na pewno tak nie będzie.
I teraz pytanie, czy coś z tym można zrobić.
Okazuje się, że tak. Możesz skonfigurować twój serwer tak, że nawet jeżeli ktoś przejdzie pod adres nieistniejący,
to i tak będzie serwować główny plik np. index.html,
tak jak my tutaj mamy w naszej głównej aplikacji i dzięki temu taka operacja, czyli korzystanie z History
API będzie możliwe.
I teraz pytanie, jak to skonfigurować.
Tutaj świetne porady znajdziesz na stronie VueRouter. Dokładnie w tym miejscu Example Server Configurations,
zobaczysz jak skonfigurować to dla serwera Apache, czyli z użyciem pliku htaccess jak dla nginx,
jak to zrobić w Node.js
Itd.
Jak widzisz, tutaj praktycznie dla wszystkich serwerów jest to opisane, więc wystarczy to w ten sposób
skonfigurować i nie powinno być problemu.
I te URL'e będą bardziej przyjazne.
Będzie można od razu również wpisać taki URL
i wszystko będzie działać jak najbardziej poprawnie.
Wpiszemy sobie tutaj jeszcze raz user np. jeden. Wciskam Enter, strona się wtedy całkowicie odświeża, ale że właśnie
Webpack Dev Server serwuje ten plik index.html, kiedy on się wczyta razem z naszym skryptem vue,
to vue sobie sprawdza jaki jest adres i aktualizuje nam tutaj widok, tak żeby wszystko było w porządku.
Ok.
To tyle jeśli chodzi o History API.
Tak naprawdę nie ma tutaj nic skomplikowanego. Warto tylko pamiętać o tych problemach z błędami 404 i jak
i rozwiązać.