w Praktyce
7 godz. 1 min · Angular · Full-stack i Programowanie
Mateusz KuleszaSenior Software Developer, Konsultant, TrenerPodstawą produktywnej pracy z angularem jest możliwość zagwarantowania że wszystko działa bez potrzeby wielokrotnego “przeklikiwania” poszczególnych ekranów. W pierwszej części kursu omawiam więc temat testów automatycznych.Już po obejrzeniu pierwszych lekcji zobaczysz dlaczego warto testować kod i jak dzięki narzędziom dostarczonym z angularem jest to proste. Zobaczysz jak testowanie automatyczne pozwoli zaoszczędzić Ci wiele godzin spędzonych na szukaniu błędów.
Za jakość aplikacji odpowiada nie tylko to czy działa ona poprawnie, ale w dużej mierze decyduje o tym dobry interfejs użytkownika oraz UX, czyli user experience. Dwie kolejne sekcje kursu poświęcone są właśnie dobremu UI oraz UX. Omawiam typowe problemy w oparciu o zasady i wskazówki specyfikacji Google Material Design - jednej z najbardziej szczegółowych specyfikacji UX. Wszystkie przykłady UI zarówno w wariantach desktopowych jak i mobilnych omówione są na przykładzie Angulara oraz obszernej biblioteki komponentów Angular Material. Zobaczysz nie tylko jak korzystając z gotowych komponentów błyskawicznie budować nowe funkcjonalności, ale przy okazji omówimy wiele praktycznych wskazówek oraz dobrych praktyk UX które warto wykorzystać w Twoich aplikacjach.
W ramach budowania interfejsów skupimy się na najmniejszych szczegółach takich jak prawidłowe zachowanie linków, przycisków oraz wskaźników przechodząc stopniowo do coraz większych elementów aplikacji takich jak nawigacja, układ strony, paski nawigacyjne czy okna dialogowe. Przy każdym etapie czeka Cię masa wskazówek, przykładów i rozwiązań typowych problemów user experience.
Jednak UX to nie tylko wygląd i zachowanie pojedynczych elementów. W ostatnich sekcjach kursu dowiesz się jak projektować bardziej złożone interakcje z użytkownikiem. Zobaczysz wieloetapowe formularze kreatora oraz dowiesz się jak zarządzać stanem aplikacji oraz różnymi źródłami danych. Pokaże Ci jak zbudować samodzielnie sortowane, filtrowane i stronicowane źródła danych oraz połączyć je z różnymi komponentami UI takimi jak listy czy datagrid.
Na koniec kursu zobaczysz jak możemy różne gotowe elementy UI połączyć w przepływ ekranów budując ścieżkę użytkownika. Zobaczysz jak prawidłowo zaprojektowane komponenty wraz z dobrze zaplanowanym UX pozwalają być niesamowicie produktywnym jednocześnie nie poświęcając jakości czy dobrej architektury aplikacji.
Jest to kurs dla osób które już pracowały z angularem i chciałyby wyjść poza pojedyncze techniki oraz poznać proces projektowania aplikacji w praktyce z uwzględnieniem najlepszych praktyk programistycznych oraz user experience. Zarówno w wariancie webowym jak i projektując pod urządzenia mobilne.
Angular 6, 7, 8+
W tej lekcji zajmiemy się komponentami które pozwalają nam
na podstawowe interakcje z naszą aplikacją takim jak przyciski
czy na przykład linki ja tu wejdę w sekcję przyciski mamy przykładowy
przycisk mamy też tutaj wymienione wiele rodzajów przycisków
i teraz przechodząc do naszego kodu źródłowego ja tutaj pozwoliłem sobie przygotować
kolejny komponent przykładowy nazwałem go interactions example i
ustawiłem nasze przekierowanie w routingu żeby domyślnie ładowało nasz komponent
interactions example tutaj do modułu nie dodawałem niczego nowego i
nasz komponent interactions example ma tylko na razie po prostu tytuł
i przykładowy tutaj styl który tam centruje stronę zobacz sobie jak to wygląda interaction
example works i teraz co będziemy chcieli tutaj zrobić
kilka takich styl i dla naszych przykładów czyli powiedzmy pojedynczy
przykład będzie miał jakiś margines 30
pikseli powiedzmy 0 i dodatkowo zróbmy jakieś
wyśrodkowanie powiedzmy flex-start albo flex-end
na przykład w ten sposób i będzie mógł sobie stworzyć kilka takich przykładowych
wierszy w których będziemy mogli dodawać sobie różne interakcje
i pierwszą taką interakcją podstawową byłyby po prostu
zwykłe linki czyli a href tak
zwykła kotwica i powiedzmy kilka takich przykładowych home
page contakt tak
jakieś przykładowe linki zobaczymy jak to będzie wyglądało na
stronie okej przeładowało
się i jak widzisz jest to zwykły tekst nie mamy tutaj żadnego odstępu pomiędzy tymi
linkami mogliśmy potraktować flex boxem żeby dodać odstępy
i teraz tak jeśli chcesz ze zwykłych linków możesz jednak zwróć uwagę
że takie coś wygląda bardzo jak strona internetowa jak zwykły tekst i
jeśli stworzymy aplikację no to bardziej interesowałoby nas tutaj przyciski i
teraz przyciski możemy zrobić na dwa sposoby możemy użyć faktycznie elementu button
a możemy użyć elementu właśnie linku czyli a href jeśli
chciałbym dodać przyciski no to muszę odpowiedni ten moduł dodać do naszego material
examples module ja tutaj sobię oddzielę osobną sekcją może w ten
sposób okej
i mat button module
który zawiera wszystkie komponenty potrzebne do przycisków i
teraz żeby użyć przycisku zobaczymy sobie dokumentację wygląda to w ten sposób button
mat button czyli musimy mieć do przycisku atrybut mat button ale
nie musimy używać przycisku możemy także używać tego do elementów
linków czyli możemy dać do przycisku możemy dać do linku jaka jest różnica jeśli
będę miał aplikację to pamiętaj o tym że nasza aplikacja nie tylko przez ludzi może być używana
nie tylko wizualnie może być obsługiwana ale przez jakieś skrypty jakąś
wtyczkę do przeglądarki wyszukiwarka czy także osoby z ograniczoną
wizualną zdolnością oglądania naszej strony dlatego
linki to jest coś co dotyczy nawigacji to jest coś to bezpiecznie
może otworzyć automat co bezpiecznie może wtyczka załadować i linki
generalnie nie mają efektów linki nie wysyłają postów nie dodają treści nie
usuwają niczego przyciski wręcz przeciwnie przyciski powodują jakiś efekt
i przycisk nie jest bezpiecznym jakby narzędziem
do sobie takiej nawigacji po stronie więc automat nie powinien przycisków
po linkach natomiast może sobie chodzić może ładować sobie dynamicznie jakieś fragmenty
strony na przykład proxy może doładowywać rzeczy dlatego uważaj czy używasz właśnie
przycisku czy linku jeśli chodzi o angular material on pozwala stworzyć
przycisk wygląda tak samo niezależnie czy jest linkiem czy przyciskiem czyli
ja mogę do tych naszych tutaj linków dodać sobie powiedzmy do
wszystkich trzech mat-button i one
powinny nam się zamienić teraz na przyciski czyli jak widzisz wygląda to jak przycisk ale musisz
pamiętać że jest to nawigacja czyli zakładamy że bezpiecznie
można się poruszać po tych wszystkich linkach i nie powoduje to żadnych
efektów jeśli chcielibyśmy stworzyć przyciski
takie które na przykład dodają coś usuwają zmieniają
zachowania naszej strony mają jakiś efekt powinniśmy użyć elementu button
jak widzisz nie ma tutaj różnicy ale takie przyciski nie
powinno już być wciskane automatycznie poza tym takie
przyciski możemy dodać tutaj zawsze opcje disable czyli
mogę któryś z przycisków na przykład dodamy
sobie admin mogę ustawić disabled
i taki przycisk będzie szary jak widzisz tutaj zmienia się kursor widać że
on jest niedostępny nie mogę go kliknąć nie możemy czegoś takiego zrobić ze
zwykłym linkiem on wygląda niedostępny wygląda że nie
można go kliknąć ale jakikolwiek automat jakikolwiek skrypt
czy wtyczka może nadal z takiego linku skorzystać okej
czyli zostawimy sobie w ten sposób taki zwykły tu jest pasek z linkami
i teraz co jeszcze jest dostępne jeśli chodzi o interakcje
w angular material kolejnym przykładem
którego użyjemy example jest to div
albo chciałam pokazać jeszcze jedną możliwość jeśli mamy nawigację szczególnie górną
i dolną czyli paski na górze i na dole zamiast skorzystać ze zwykłego diva mamy
taką możliwość żeby użyć specjalnego tutaj modułu mat toolbar
module który zawiera właśnie komponenty pasków nawigacyjnych
górnego dolnego paska nawigacji i teraz wygląda
to w ten sposób czyli tutaj zamiast div użyje mat toolbar
i powinien się pojawić pasek nawigacji domyślnie ma tu
jakiś kolor taki szary i teraz kolejne linki umieszczę
na takim pasku nawigacyjnym zobaczymy jak to będzie wyglądało czyli podobnie
tutaj buttony nie będą miały już href jeżeli trzeba możemy akcję
kliknąć dodać tego na razie nie będę robił tutaj możemy w takim pasku mat toolbar
umieścić jakieś interakcje read more
i mogę umieścić na przykład przycisk select czyli mamy
dwa przyciski read more i select one się pojawiły tu z prawej strony
zadziałało justify-content okej i
teraz tak te przyciski mają jakby równą wagę
jeden jest ważniejszy drugi z mniej ważny tutaj select jest akcją
jest to coś jest to coś co jako użytkownik chcielibyśmy żeby uruchomił wybrał read
more jest akcją drugorzędną ważniejszy jest select możemy więc brać różne
rodzaje przycisku możemy użyć mat button mogę
użyć właśnie jednej z tych opcji tutaj czyli raise
button flat button stroked button i teraz opcja stroked obrysuje
nam ten przycisk czyli dostajemy taką wersję lekko oznaczoną lekko
wyróżnioną flat sprawi że
ten będzie miał kolor i teraz ten kolor domyślnie jak widzisz jest tutaj biały możemy
jednak wybrać mu ten kolor w ten sposób czyli jeden z
kolorów skórki może być to primary może być to accent czyli możesz
jakiś domyślny kolor ze skórki wybrać jak widzisz ten przycisk od razu się wyróżnia
jest on ważniejszy od tego przycisku read more czyli
mamy taką możliwość i dodam sobie jeszcze jakiś przykład żeby
pokazać właśnie różne poziomy wagi przycisków też
jakoś sobie to wyróżniamy czyli powiedzmy dodam sobie tutaj czyli
dodamy sobie jeszcze jakiś tekst powiedzmy priorytety okej
priorities świetnie i w drugim przykładzie także
użyję dwóch przycisków i będzie to powiedzmy
show details czyli też jakoś drugorzędny przycisk
i tutaj dodam przycisk który będzie bardzo ważny mianowicie będzie to add to
cart teraz wewnątrz przycisku oprócz tekstu ja mogę
umieścić nawet ikonę powiedzmy w ten sposób mogę
ikonę użyć wewnątrz przycisku i jeśli ten
przycisk jest zwykły można
mu kolor ustawić ma on ikonę więc na pewno się wyróżnia aczkolwiek
gdybym spróbował to jeszcze raz zrobić i
zamiast głównego koloru ustawił accent przycisk
tu będzie miał inny kolor niż wszystkie pozostałe elementy na stronie dodatkowo użyję
opcji flat wyróżnia
się on bardziej jeszcze oprócz tego możemy użyć opcji podniesionego
przycisku raise button więc on jeszcze bardziej się wyróżnia więc
teraz jeśli masz kilka akcji dostępnych dobrą praktyką
jest prowadzi użytkownika i wskazywać mu najbardziej pożądaną
akcje domyślną akcji którą chcemy żeby wykonał żeby nie musiał się zastanowić wybierać
między pięcioma opcjami pytamy się użytkownika czy chciałbyś użyć tego
domyślnie opcji jeśli nie to jeszcze masz opcje dodatkowe i
tu użyjemy jeszcze jednego przykładu skopiuję sobie któryś z tych pasków i
tych wyborów może być jeszcze więcej mianowicie jeśli mam
tutaj dwa przyciski stworzę sobie tym razem trzy przyciski pierwsza
opcja to będzie powiedzmy delete druga
opcja to będzie save draft czyli zapisz
szkic i trzecia opcja to będzie send i tutaj jako akcja domyślna
też wyróżniamy send dodamy jakąś ikonę wyślij
wyślij zobaczmy jak ten pasek wygląda jak widzisz
już wszystkie ikony są obok siebie i gdyby nie właśnie ta ikona
wyróżniająca wszystkie przyciski są jakby na jednym poziomie mają jedną wagę jak tutaj
je rozróżnić po pierwsze wszystkie akcji niebezpieczne takie jak nie
usuń wyczyść wszystko co może utracić dane możemy
dać color warning który jest także pobierany
z domyślnie palety kolorów jak widzisz jest czerwone akcja
jakby drugorzędna możemy właśnie użyć obramowania
a akcja pierwszorzędna możemy użyć wyróżnienia czyli na przykład flat albo
race jak widzisz w ten sposób możemy określić poziomy ważności
dla poszczególnych przycisków tutaj stworzę sobie jeszcze jakiś odstęp w
ten sposób i ten przycisk damy jeszcze kolor żeby
go faktycznie wyróżnić mamy trzy poziomy i teraz drugą opcją
oprócz kolorów i obramowań jest jeszcze pozycja przycisków
ja tu wszystkie je specjalnie do prawej strony wyrównałem dlatego że osoby czytające
na przykład tu w europie od lewej do prawej właśnie
ostatnia rzecz najważniejsza rzecz będzie po prawej stronie tutaj
pierwsza opcja do ostatniej opcji ostatnia to jest ta którą chcemy zasugerować
i teraz co możemy zrobić możemy te opcje rozdzielić od siebie ja
dodam specjalny styl nazwę go spacer
czyli coś co doda odstęp jako że tutaj ten toolbar
ma ustawioną opcję flex display flex czego tu akurat
nie mamy jak widzisz w example więc nasze przyciski tu się układają domyślnie a te ja wykorzystam we
fleksie to działa tutaj opcja flex-end skorzystamy z tego i
dodamy tutaj opcję flex 1 czyli rośnij malej
jeśli trzeba 0% może w ten sposób jeden zero
czyli ten element jeśli nie będzie miejsca będzie miał 0% czyli
nie będzie zajmował w ogóle miejsca jeśli nawet będzie dostępna przestrzeń pomiędzy elementami
to on się rozciągnie żeby zająć całą tą przestrzeń czyli
tutaj dodam sobie ten spacer i
on powinien rozdzielić te elementy i w ten sposób delete jest z tej strony tu
jest nasz element który się rozciąga flex boxem na całą szerokość tutaj mamy kolejne
przyciski i w ten sposób jak widzisz hierarchia ważności powstaje
z kilku poziomów mamy pozycję tu się znajduje jedna akcja akcja
która jest opcjonalna mało ważna nie zalecamy tu
jest akcja opcjonalna jest podświetlona podkreślona i
tu jest akcja główna podstawowa czyli wyślij zapisz jeśli umieszczasz ikony
w przyciskach no to też warto wszędzie gdy mamy ikonę pamiętać
że jeśli łączymy ją z tekstem to dodasz opcję inline jeśli
nie mielibyśmy tutaj tekstu to możemy użyć mat icon button
i wstawić samą ikonę ja tutaj cofnę i
zostawię opcję inline razem z opisem żeby
to się zmieniło na jak największą wagę czyli te ikony jak widzisz jeśli zrobimy opcję inline
one dopasują się do tekstu przycisku nie będą one wystawały
i miały tą samą wysokość linii poza przykładami które
tu umówiliśmy istnieje jeszcze kilka innych wariantów przycisków i sposoby ich użycia
ale o tym wszystkim już w kolejnych lekcjach tak więc do zobaczenia