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 rozpoczynamy już praktyczną przygodę z Vuex'em. Sam będę chciał ci krótko pokazać jak zainstalować
sobie ten dodatek i jak zacząć z niego korzystać.
A tę wiedzę będziemy rozwijać w lekcjach kolejnych.
Więc na początek, będąc w katalogu w którym pracujemy, czyli jest to przykład 10, wpiszemy sobie npm install Vuex.
Chcemy taką bibliotekę doinstalować, bo ona nie jest częścią samego frameworka' vue.
Musimy sobie to doinstalować i będziemy mogli z tego korzystać.
Co ważne Vuex można dodać do strony, co znajdziesz na stronie dokumentacji, również w formie script tag'u.
Tak więc, gdybyś tworzył prostą stronę internetową gdzie Vue dołączasz normalnie, a nie korzystasz z takiego
build'a, jak tutaj robimy, z takiego workflow. Też możesz z Vuex'a skorzystać.
Natomiast my będziemy robić to w sposób bardziej zaawansowany, mając już Vuex piszemy npm start, żeby
uruchomić naszą aplikację i będziemy mogli sobie Vuex'a skonfigurować. Tutaj po odświeżeniu ona zacznie działać.
Nic w niej ciekawego nie ma, będziemy to rozwijać w kolejnych lekcjach. Natomiast musimy Vuex najpierw
gdzieś zaimportować i będę chciał utworzyć specjalny katalog, tutaj w 10 folderze src, który nazwę
store i w nim stworzymy plik store.js.
I tutaj będę chciał sobie zaimportować Vuex from vuex. Tak importujemy.
Jeżeli to jest zainstalowane z użyciem npm i również jeszcze przyda nam się tutaj samo Vue
from vue i pierwsza rzecz, którą musimy zrobić, to musimy zrobić Vue.use, w ten sposób mówimy vue, że chcemy korzystać
z jakiegoś plugin'u i podamy tutaj Vuex.
Dzięki temu ten plugin Vuex ma możliwość zarejestrowania różnych rzeczy np. w formie globalnej mixiny, co już
robiliśmy na wszystkich instancjach Vue.
Więc to będzie nam potrzebne i ważne żeby to wywołać, przed kolejnym zapisem, który będziemy robić za
moment, bo inaczej będziemy mieli błąd.
To musi być najpierw, a teraz będę chciał wyeksportować z tego pliku new Vuex.Store, czyli utworzymy sobie
nowy store, gdzie będziemy przechowywać wszystkie potrzebne informacje i z tego pliku go wyeksportujemy.
I tutaj będę chciał napisać state.
To jest bardzo ważne i możesz myśleć o tym obiekcie state, jak o datach, które mamy normalnie w komponentach,
tylko to, co tutaj dodamy, to będzie współdzielone przez wszystkie instancje, przez wszystkie komponenty,
więc na początek dodajemy sobie tutaj po prostu message: Hello World.
Może zróbmy to w ten sposób.
OK, teraz będę chciał, żebyśmy przeszli do pliku main, gdzie mamy główną aplikację. Zaimportujemy sobie
ten store, napiszemy import store. Może z małej litery, nawet. Bez znaczenia tutaj from store/store.
Mamy zatem zaimportowane to. co tutaj wyeksportowaliśmy. Ustawione to zostało na vue i wystarczy, że teraz
do tej głównej aplikacji dodamy coś takiego.
To jest równoważne z takim zapisem, ale w ES6 możemy to skrócić do takiego zapisu.
Dzięki temu od teraz każda instancja będzie miała dostęp do tego store.
Natomiast w jaki sposób się będziemy do niego odwoływać, zobaczysz w akcji kolejnej.
Natomiast, zobaczmy czy w ogóle nie ma błędów, nie ma.
Przejdźmy do Vue i tutaj zobacz, możemy przejść do panelu Vuex, do którego wrócimy jeszcze w jednej z
kolejnych lekcji i widzimy, co mamy w naszym state, więc myśl o tym state właśnie jak o takim głównym miejscu,
gdzie będziemy mieli wszystko, co jest nam potrzebne.
Aczkolwiek to, co jest tutaj będziemy jeszcze później rozszerzać.
W kolejnych lekcjach przydadzą nam się natomiast użytkownicy, których ja zapisałem tutaj i users.
Jest to plik json'owy, więc zamiast tego message będę chciał tych użytkowników tutaj wstawić.
Mógłbym to wszystko skopiować, oczywiście, wstawić w to miejsce, ale zróbmy to korzystając z dobrodziejstw
webpack'a, napiszemy users i zrobimy tutaj
required. Ważne, żebyś wiedział, że to, co widzimy to będzie wykonane na etapie właśnie build'a, czyli nie
w przeglądarce internetowej, to będzie wykonywane, tylko webpack zrobi to za nas dużo wcześniej, ale required jest
to odpowiednik takiego importu z ES6.
Z tym, że on może być w dowolnym miejscu wykonywany, więc będę chciał sobie zrobić require i względem
katalogu, w którym jesteśmy to będzie 1 do góry,
data users. Nie musimy również podawać rozszerzenia json. Wystarczy, że zrobimy to w ten sposób i webpack zadba
o to, żeby to wszystko co jest tutaj zamienić na obiekt JavaScript'owy,
będzie to tablica i ta tablica zostanie tutaj przypisana.
Zobaczymy czy ma to sens.
Widzimy users, jest to tablica i będziemy mogli na tej tablicy w lekcjach kolejnych pracować.
Tak więc to tyle, jak widzisz mamy ciutkę w takiej konfiguracji, na początek. Musimy pamiętać, żeby tutaj
zaimportować store i wstawić go do tej głównej instancji. No, a resztę będziemy robić już w tym miejscu,
od kolejnej lekcji.