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 pójdziemy jeszcze o krok dalej, niż w lekcji poprzedniej, bo chcę Ci pokazać jak możemy zrobić
tak, abyśmy nie musieli tego globalnego Bus'a do komunikacji importować,
w każdym module, gdzie nam on jest potrzebny, będę chciał go wstrzyknąć, po prostu, do wszystkich instancji.
Jest to rozwiązane, rozwiązanie dosyć popularne i jeżeli nie będziesz potrzebował niczego więcej, to jak
najbardziej polecam z niego korzystać.
Pokażę ci na to dwa sposoby.
Więc, mamy to co mieliśmy w lekcji poprzedniej.
I będę chciał teraz zrobić tak, żeby tutaj w tej naszej głównej aplikacji nie musieć importować tego
Bus'a tylko chciałbym zrobić tak, że tu gdzie z niego korzystaliśmy, to ja chciałbym korzystać z this i np.
events, this.events on progress.
Zróbmy coś takiego i następnie w komponencie counter też nie będziemy go importować.
Chociaż nie ma w tym zasadzie nic złego, ale chcę Ci pokazać, że można po prostu rozszerzać, więc napiszemy
this.events emit i teraz zrobimy jedną ciekawą rzecz, mianowicie tutaj w głównym naszym pliku będę chciał
zaimportować, po prostu, plik, który mamy w events i tam mieliśmy Bus.
Czyli nie importuje niczego, tylko sam ten plik, a więc kod, który jest wewnątrz się wykona i dlatego będę
chciał teraz tutaj utworzyć, ale już bez eksportu const
Bus równa się new Vue i będę chciał stworzyć globalną mixinę, czyli będę chciał napisać mixin.
Czyli każda instancja powinna mieć w data, coś takiego jak events i to będzie ten nasz Bus.
Jeżeli zrobimy coś takiego, to dzięki temu wszystkie nasze komponenty mają od razu dostęp do this.events
i powinno nam to zadziałać. Sprawdźmy.
Ok.
Okazuje się, że wszystko działa poprawnie, więc w ten sposób możemy rozszerzyć Vue.
Ale ja chciałbym mieć tutaj dostęp pod dolar events i tego nie możemy zrobić tutaj, tworząc taką mixinę.
Nie mogę tego nazwać dolar events, więc dlatego stworzymy rzecz troszeczkę inną i nie wiem czy byś na to wpadł,
ale jak najbardziej, możemy to robić.
Otóż Vue ma przecież swój prototyp, więc możemy rozszerzyć prototyp Vue i
od razu powiem ci, że nie jest to coś co ja wymyśliłem i co może nie być dobrą praktyką.
To jest rzecz, którą ja widziałem osobiście u twórcy Vue.js, widziałem jak on to pokazywał, a to oznacza,
że jak najbardziej Vue może być rozszerzalne i widziałem to również w wielu innych przykładach, dlatego chce
się również tym z tobą podzielić.
Więc rozszerzony prototyp Vue
i tutaj dodamy coś takiego jak events, więc przypiszemy do tego naszego już utworzonego Bus'a, OK.
Nie musielibyśmy go nawet tworzyć tutaj osobno w stałej.
Mogłoby tutaj być new Vue.
Ten plik jest importowany tutaj, a więc jest wykonywany i dzięki temu teraz wszędzie powinniśmy mieć
możliwość napisać
events
i powinno to również bez problemu zadziałać.
Zobaczmy.
Wygląda na to, że wszystko jest w porządku, więc taki sposób możesz sobie stworzyć taki Bus do komunikacji,
jak widzisz.
Nieważne jak bardzo będziesz miał zagnieżdżone komponenty, jeżeli z jakiegoś komponentu coś wyemitujesz,
to w innym bez problemu możesz nasłuchiwać na takie zdarzenie.
Dodatkowo tak jak wspomniałem, możesz tutaj od razu na tym events stworzyć sobie różne metody.
Czyli tutaj mógłbyś zrobić po prostu methods i je utworzyć i później na tym dolar events je wywoływać.
Tak więc, to tyle w tej lekcji. Jeżeli to, co do tej pory już wiesz, jeżeli chodzi o przepływ informacji
wystarczy Ci w twoich projektach, to jak najbardziej jest wszystko w porządku. Natomiast prędzej czy później
będziesz tworzył taki projekt, gdzie będziesz potrzebował jakiegoś jednego z centralizowanego miejsca,
gdzie będziemy przechowywać dane.
Jeżeli te dane zmienimy, to chcielibyśmy żeby w całej naszej aplikacji wszędzie gdzie z nich korzystaliśmy,
było to odzwierciedlone i to będziemy mogli zrobić z użyciem Vuex'a i o tym jak to zrobić, przekonasz się
w kolejnej i jeszcze wielu następnych lekcjach.