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
Zanim przejdziemy do bardziej zaawansowanych tematów lekcji kolejnej i w dalszej części tego kursu, to
chciałbym ci na początku jeszcze powiedzieć czy przypomnieć jakie mamy sposoby na pracę z framework'iem
Vue.js. I najprostszym sposobem jaki możemy podjąć, to jest po prostu dołączenie sobie tego framework'a w formie
skryptu, do naszej strony internetowej.
Czy zrobimy to lokalnie, z naszego serwera czy, z takiej sieci CDN,
to nie ma większego znaczenia.
Natomiast, to jest najprostszy sposób na pracę z Vue.js, a więc dołączamy sobie taki skrypt.
Dzięki temu, mamy globalny obiekt Vue, z którego możemy korzystać.
Jak widzisz, jest to tak naprawdę funkcja i możemy z użyciem operatora new tę funkcję wywołać.
I dzięki temu, możemy stworzyć taką prostą aplikację.
Czyli tutaj powiedziałem Vue,
który element ma kontrolować, jest dokładnie ten element i wewnątrz tego elementu, jego kod będzie traktowany
jako szablon dla tej aplikacji.
Więc oczywiście po odświeżeniu, będzie to wyglądało w następujący sposób. Taki sposób tworzenia aplikacji
jest jak najbardziej poprawny, ale przyda się głównie wtedy, kiedy mamy już gotową stronę internetową
i chcemy do niej dodać jakiś widget albo chcemy jakąś część kontrolować z użyciem framework'a Vue.
Wtedy bez trudu możemy sobie taki framework dołączyć i w ten sposób pracować.
I nie ma w tym absolutnie nic złego.
Natomiast jeżeli będziemy chcieli budować bardziej ambitne aplikacje internetowe, takie gdzie od podstaw
będziemy je tworzyć i one będą napędzane danymi, to raczej będziemy pracować w inny sposób,
co zobaczysz w lekcji kolejnej i jeszcze jedną istotną rzeczą tutaj, o której chcę już teraz powiedzieć
jest fakt taki, że tworząc w ten sposób aplikacje.
Ten kod który jest w tym miejscu, on będzie przez przeglądarkę wczytywany i interpretowany jako elementy
div, h1 czy p, a dopiero później Vue pobierze sobie outerHTML, tego elementu app, bo dokładnie tak to działa,
gdybyśmy tutaj przeszli i zaznaczyli ten element.
Dolar 0, będę miał do niego referencje, jeżeli wpisze dolar 0 outerHTML, to w formie stringu mamy zwrócony
cały ten element, czyli Vue tak naprawdę dopiero taki string weźmie sobie i za pomocą kompilator'a, który również
jest dołączony do takiej wersji tego framework'a.
Skomplikuje tę templatkę i wynikiem takiej kompilacji będzie funkcja.
Będzie to funkcja renderująca.
Co jest ważne, jeżeli będziemy pracowali w taki nowocześniejszy sposób, w jaki pokaże Ci w lekcji kolejnej.
I w jaki będziemy pracować w całym tym kursie, to będziemy mogli na etapie build'a już rekompilować
templatki do funkcji.
Dzięki temu będziemy mogli dostarczać aplikację, która będzie miała zmniejszoną wersję tego framework'a Vue,
bo będzie ona pomniejszona o ten kompilator.
Czyli nie będzie ten kompilator potrzebny, w momencie gdy nasza aplikacja będzie się wczytywać u użytkownika
w przeglądarce. Po prostu templatki, czyli szablony, będą skomplikowane wcześniej do tych funkcji renderujących.
Tutaj zresztą mamy jeszcze inną możliwość. Gdybyśmy z tej aplikacji wyrzucili ten kod.
I tutaj nie podawali elementu, który ma być kontrolowany.
To moglibyśmy pobrać tutaj coś takiego jak template.
I w zapisie ECMAScript6 skorzystam sobie z takich backtick'ów. Wstawi całą naszą templatkę w formie takiego string'u,
a na koniec tę naszą instancję utworzoną z new, zamontować w ten sposób do app.
Zauważ, że to by zadziałało tak samo.
I to znowu pokazuje nam, że Vue.js tak naprawdę potrzebuje string'u i z tego kręgustring'u jest w stanie stworzyć
funkcję renderującą do której później podstawione są odpowiednie dane.
Czyli nie nieważne czy to będzie w drzewie DOM.
Czy będzie to tutaj.
Natomiast jeżeli robimy taki zapis template, główne instancje w komponentach, to jest pewne, pewna różnica. Są
pewne takie rzeczy, które możemy tutaj zawrzeć, a których nie moglibyśmy zawrzeć w tym miejscu, dlatego
że tutaj mamy żywy DOM, czyli obiektowy model dokumentu i np. jeżeli mamy element ul, to wewnątrz może
być tylko li, tutaj nie mógłbym stworzyć jakiegoś swojego komponentu i go tutaj wstawić.
Natomiast w takiej templatce tutaj, zawartej w takim strojustring'u, mógłby już to zrobić i będziemy również mogli
to robić już od kolejnej lekcji, kiedy będziemy pracować z Vue CLI.
Natomiast o tych funkcjach renderujących będę chciał jeszcze trochę powiedzieć w jednej z kolejnych lekcji.
Dlatego tutaj oprócz tego w tej lekcji, oprócz tego że powiedziałem ci, że takie jest najprostsze podejście do pracy
z Vue,
to chciałbym zwrócić uwagę na to jak Vue traktuje sobie templatki.
Albo outerHTML z tego elementu albo możemy pobrać to w formie string'u.
Natomiast jest to zamieniane docelowo na funkcje renderującą.
I co ciekawe, taką funkcję my moglibyśmy napisać również od zera i w jednej z kolejnych lekcji będę chciał
Ci to pokazać.
Natomiast w kolejnej lekcji pokażę ci, jak zainstalować Vue CLI i rozpocząć pracę z tym narzędziem i będziemy
tę pracę kontynuować już do końca tego kursu, właśnie w taki sposób.