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 wykorzystamy różne komponenty wskaźników przycisków
i tak dalej żeby zbudować coś bardziej praktycznego zbudujemy
na przykład taki pasek górny nawigacji z komponentu toolbar już
skorzystaliśmy we wcześniejszych lekcjach ale pamiętasz one były tylko takim nudnym szarym
prostokątem spróbujmy teraz bardziej go urozmaicić tutaj
mam już przygotowane komponent pod
tytułem toolbars example w module material examples w katalogu pages
i taki wygenerowany świeżo komponent dodałem także do routingu
przestawiłem tutaj routing że jeśli ktoś wejdzie na pustą ścieżkę
czyli po prostu wpiszę sam adres bez żadnego tutaj bez żadnej ścieżki to
go przekierowujemy domyślnie na właśnie ten toolbars dzięki
czemu powinno to wyglądać w ten sposób że cały nasz html który tutaj mamy
przykładowy także jakiś tytuł wycentrowanie wyśrodkowanie
to wszystko nam się powinno po prostu pojawić w tym miejscu i
teraz jeśli chcemy użyć tego naszego paska nawigacyjnego toolbar
no to musisz mieć tu załączone oczywiście mat-toolbar module do komponentów
w którym chcesz korzystać z tego z tych komponentów lub
musisz użyć modułu który reeksportuje czyli importuje i z powrotem eksportuje będziemy
także korzystać z przycisków czyli odpowiedni moduł załączony tooltip batch icon
czyli te wszystkie wskaźniki interakcje z których będziemy chcieli korzystać w
naszym pasku adresu czyli tutaj w naszym kontenerze
dodam mat toolbar jest to nasz pasek nawigacyjny
i tu mogę podać jakiś tytuł powiedzmy span
dodamy sobie example toolbar w
ten sposób i zobaczmy jak to będzie wyglądało mamy taki szary
pasek i mamy tutaj nasz tytuł dodajmy troszkę więcej tutaj elementów
mógę dać ikonę mat icon tylko jeśli ona ma być klikalna
to musimy najpierw zrobić przycisk czyli button który ma
atrybut mat button i jeśli jednak chcemy żeby w środku była ikona
możemy użyć mat-icon-button dzięki czemu ten
przycisk będzie miał odpowiedni kształt taki dopasowany do ikon znajdujący
się w środku czyli mat-icon w środku i po lewej stronie będzie
to przycisk menu czyli ikonę dokładnie użyjemy ikonę menu
czyli taka ikona hamburgera bardzo popularna właśnie
w material okej czyli mamy tutaj toolbar i pozostałe
ikony możemy dodać z drugiej strony czyli w ten sam sposób jak mamy tutaj nasz button
i menu po prawej stronie dodamy jeszcze kilka
ikor i podobnie jak wcześniej person który będzie takim
ludzikiem mogą być tu zaproszenia znajomi kontakty czat
czyli jakieś powiadomienia wiadomości i powiedzmy
jeszcze jeden przycisk more i ten more występuje
w dwóch wariantach pionowy i poziomy tutaj chcemy takie trzy pionowe
kropki które prezentują właśnie menu czyli więcej opcji ustawienia
i tak dalej i ikony nam się układają tutaj obok siebie dopasowane
docentrowane do lewej strony dlatego że mamy tutaj display flex i one układają się tutaj
jedna obok drugiej jak pamiętasz mogę ustawić tutaj specjalną klasę spead
która wstawi taki rozpychacz
pośrodku spacer czy spread i ten spacer
będzie rozsuwał elementy ale możemy też wykorzystać w
tym celu nasz tutaj tytuł czyli jeśli powiemy sobie
że mamy toolbar toolbar title i
ustawimy mu flex-grow rośnij malej jeśli trzeba ale
i zajmuj tylko tyle miejsca ile jest konieczne
i ustawimy sobie taki taką klasę na naszym tytule w
ten sposób title możemy to nawet przerobić na div w tym
momencie ale spróbujmy w ten sposób no to ten toolbar zajmuje widzisz
tutaj całą dostępną szerokość ale nie więcej czyli nie ściska
tych ikonek ona ma tu swoje własne miejsce ale zajmuje
całe dostępne miejsce po środku możemy tutaj też dodać odstęp
w przednim czyli powiedzmy dam sobie jeszcze margines z prawej
z lewej strony i tu polecam tak jak w specyfikacji material design żeby
używać takich jednostek jak 2 piksele 4 8
16 i tak dalej czyli korzystać z jednej skali
czy nie wybrać sobie wartości losowo tylko
przyjąć jedną z typowych szerokości typowych skali
dzięki temu jeśli użyję tutaj powiedzmy 32
piksele zobaczymy jak to będzie wyglądało jest tutaj
jakiś odstęp możemy użyć troszkę mniej na przykład 24 albo 16
czyli wielokrotności 4 lub wielokrotności 8 dzięki
temu te odstępy będą proporcjonalne nie będzie nie będą rzeczy porozsuwane zawsze będą
od siebie w proporcjonalnych odstępach okej ten pasek już
jakoś wygląda co możemy jeszcze zrobić jak pamiętasz przy
tych różnych wskaźnikach musimy dać dodatkowe informacje tak jak tooltipy
czy na przykład math batch taką etykietkę damy jej
color i tutaj color muszę wziąć
z palety mam primary mam accent mogę dać warning który generalnie
zastrzeżeń ale jest to bardzo widoczny kolor zwróć jednak
uwagę że jeśli dodajemy to na przycisku które zawierają jakieś treści czy ikonkę no
to jest to bardzo oddalone jeśli chcemy żeby to było faktycznie na treści
której dotyczy ta ikonka proponuję tu dać na ikonie dodać
a nie na przycisku i wtedy ta etykietka nam się pojawi tu ładnie w
rogu żeby nam tu nie przeszkadzało dodam taki szybki tutaj trick mianowicie
show notification nie show notification
czyli kliknięcie w tym przycisku się wyłączało włączało te etykiety
zobaczymy jak to będzie wyglądało z etykietą jak to będzie wyglądało bez
etykietki czyli jeśli etykietka pokaż na przykład liczbę 2 i jeśli nie pusty
string zobaczmy okej bardzo
fajnie jest nadal bardzo taki nudny szary pasek z czarnymi ikonami
co możemy zrobić ten cały nasz mat toolbar ma bardzo fajną możliwość
bo możemy mu także wybrać w któryś kolor z palety na przykład primary
color może być to accent możesz być to warning czy
możemy któryś z dostępnych kolorów z palety wybrać jak widzisz ikonki tutaj treść
tekst same dopasowują się czyli mają kolor który jest kontrastujący
do koloru wybranego dla naszego paska okej
jest to sobie taki prosty toolbar mamy tutaj możliwość właśnie
ikonek ja stworzę jeszcze jeden toolbar umieścimy go
pod spodem dodam jeszcze jakąś klasę example żeby mu te paski odsunąć
od siebie czyli jak poprzednio margines
jakiś tam odstęp
i do obu pasków czyli do tego paska oraz do
tego paska dodam jakąś
taką klasę żeby je rozróżnić powinniśmy mieć dwa identyczne paski teraz
co możemy z tym jeszcze zrobić taki pasek może zawierać wiele
wierszy czyli możemy wszystkie elementy znajdujące się w tym pasku
pasku umieścić w czymś takim jak na przykład mat toolbar
row użyję dwóch takich elementów
w pierwszym umieszczę to co było natomiast tytuł powiedzmy
nasz toolbar title umieszczę w drugim
i dodam jeszcze jedną klasę klasę expander albo
spacer dzięki której będę mógł te ikonki
z powrotem rozsunąć tak jak to się stało wcześniej czyli mamy
tutaj toolbar toolbar
przesunę tutaj do drugiego wiersza stąd
mogę go usunąć tutaj zostawię tylko nasz spacer żeby
rozsunął ikonki do prawej i do lewej i w ten sposób możemy mieć pasek który ma
dwie linie tutaj coś pomyliłem mat toolbar
row oczywiście czyli wszędzie gdzie mamy
toobar zamienię na toolbar literówka
okej czyli widzisz tutaj jest pasek który ma szerokość taką
tu jest który ma taką jak widzisz tutaj jest to wcięcie nierówne więc
możemy na przykład przy tym tytule powiększyć to faktycznie do 32
albo jeszcze więcej może moglibyśmy nawet do jeszcze
8 czyli do 40 pikseli tak będziemy zawsze dodawać 48
tutaj widzisz jest za duży odstęp tu jest za mały więc może
zrobimy to w ten sposób że ja dopasuje to zależnie
od paska czyli tutaj style bardzo brzydko
ale na razie będziemy mogli sobie zobaczyć jak to wygląda i ewentualnie
te style przenieść gdzieś w bardziej właściwe
do tego miejsca okej tam jest 40
tu może wystarczy 16 muszę poeksperymentować najpierw
bo one właśnie dopasowane były do jednej granicy czyli
nie wiem 44 i możemy sobie tak dopasować żeby ten
odstęp tutaj był
właściwy czyli nasz pasek nasz pasek adresowy nasz pasek
główny pasek w aplikacji może być jeden wiersz kilka wierszy może
zawierać menu ikony opis przyciski
i co jeszcze tutaj jak mamy taki pasek bardziej rozbudowany
to jest taki specjalny rodzaj przycisku mianowicie ja
mogę tutaj w tym drugim wierszu umieszczę także spacer żeby nam to
rozsunęło do prawej do lewej i pod spodem dodamy specjalny przycisk który
będzie miał mat fab i
damy tutaj ikony w środku powiedzmy
ikonę szukania i teraz ten
mat fab przycisku sprawia że pojawia się tutaj taki okrągły przycisk
jak widzisz on domyślnie ma akcent czyli ma kolor akcentujący
do tła i teraz ten przycisk przeważnie tak jak specyfikacja
material mówi powinien być umieszczony na krawędzi przy krawędzi
lub w rogu jakby elementu którego dotyczy więc jeśli ta szukajka dotyczy
tego co znajduje się pod paskiem to możemy taki przycisk odsunąć delikatnie
czyli margin-top i ponownie jednostki
proporcjonalne 2 4 16 spróbujemy 32 piksele troszeczkę
mało 60 pikseli
i zobaczmy jaką ma szerokość ma 56 na
56 spróbujmy 56 dokładnie użyć pikseli i
to myślę że jest środek czyli jak widzisz on lekko wystaje i w ten sposób jak
widzisz on znajduje się na pasku ale przez to że on wystaje z tego paska
to oznacza że ten przycisk dotyczy treści która znajduje się pod spodem
tak ten przycisk może znajdować na przykład w górnej krawędzi ekranu możemy na przykład
w dolnej krawędzi ekranu gdzieś w rogu na przykład nad listą którą chcemy przeszukiwać
może być plus dodawania takich przycisków fab należy
bardzo ostrożnie z nich korzystać bardzo rzuca się w oczy tak taki przycisk robi
tutaj duże wrażenie i już mówiliśmy sobie o poziomach ważności przycisków
w tym jak one zwracają na siebie uwagę no to ten jest jakby najwyższy w herarchii jest to
przycisk który powinien znajdować się jeden na stronienie jeśli już
bardzo chcemy takich kilka przycisków tak
na przykład szukaj i jeszcze zrobimy sobie plus czyli
dodaj to dwa takie przyciski rzucają się bardzo w
oczy i użytkownik patrząc na taki ekran musi się zatrzymać zastanowić okej co
ja mam zrobić bo mam dwie główne akcje i muszę się zastanowić nie
jest to decyzja tak nie tylko muszę się zastanowić która z tych opcji ma
być użyta to będzie chyba add o
czyli plusik jeśli to jest drugorzędna akcja możemy użyć opcji
mini fab co stworzy troszkę mniejszą ikonkę cztery
to mało polecam właśnie do layoutu używać 8 pikseli odstępu wielokrotności
8 do czcionek i marginesu przy ikonkach tych mniejszych odstępów
4 piksele jak widzisz ten przycisk niby jest mniejszy ale i tak widzisz jest on
bardzo rzuca się w oczy więc ja bym tu nie stosował tej drugiej
opcji zawsze wybieramy jedną główną opcję nie więcej
i taki przycisk jak fab jest taką świetną główną opcją tu
też ciekawostka bo mając ten cały toolbar ja mogę na przykład odwrócić kolorystykę
czyli tu użyć akcentu a na przykład na
naszym mat fab tu użyć koloru
głównego i takie coś jeszcze bardziej zwraca uwagę na siebie mimo że
to jest twoje straszne żółte rzucające się w oczy to nasz
element mimo że ten kolor sam sobie nie jest bardziej nie rzuca się
w oczy to przez to że jest na tle tego akcentu jest jeszcze bardziej wyróżniony więc
zawsze trzeba zastanowić się która z akcji jest najważniejsza która z akcji jest główna
która prowadzi użytkownika dalej tu jest domyślną akcją a które
akcje tutaj są dodatkowymi akcjami akcjami pomocniczymi
i to by były takie najważniejsze informacje jeśli chodzi o taki główny
górny pasek nawigacji on oczywiście powinien być
na samej górze przylegać do górnej krawędzi do prawej lewej krawędzi
i tutaj jeszcze brakuje jednej istotnej rzeczy ale
o tym może już w kolejnej lekcji tak więc do zoboczenia