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 zaczynamy już korzystać z poszczególnych komponentów angular
material zaczniemy od takich komponentów małych podstawowych
takich jak różne wskaźniki przyciski i ikony powiedzmy
że zaczniemy od ikon żeby umieścić nawet taki prosty element jak ikona musimy skorzystać
z któregoś z komponentów które dostarcza nam material i ja tutaj
żeby móc łatwo pokazywać tobie tego
typu różne przykłady to wygenerowałem odpowiedni moduł nazwałem go sobie material
examples i dodałam go do głównego app module czyli material
examples module dodam mu także routing i wewnątrz tego
modułu dodam komponent o nazwie indicators
example a także zamontowałem go tutaj w routingu czyli routing
zawiera ścieżkę pustą zawiera nasz komponent indicators
w ścieżce indicators i zawiera przekierowanie żeby automatycznie jak tylko wejdziemy
na stronę ładował nam się komponent indicators także z app component
usunąłem wszystkie elementy żebyśmy widzieli tylko to na czym chcemy się skupić
tutaj w źródłach tego kursu także powinniśmy już przygotowane
taki przykładowy example component gdzie po prostu będziemy mogli sobie
ładnie wyeksponować tutaj ikony czyli
tutaj cokolwiek wpiszę powinno nam się to elegancko wyświetlić
w tym miejscu okej mamy tutaj ikony
jeśli chciałbym użyć położyć właśnie takiego komplementu jak powiedzmy mat-icon to
nie mogę tego po prostu tak zrobić pamiętasz żeby używać komponentów muszę je najpierw
zaimportować czyli tutaj nasz specjalnie stworzony do tego celu moduł
nie mogę tego zrobić w głównym module w każdym module w którym chcesz używać komponentów
musisz je zaimportować zaimportować ich moduł albo zaimportować moduł który
eksportuje na przykład możesz stworzyć shared module w którym będziesz przechowywał komponenty
tutaj angular material czyli tutaj importuję sobie mat icon module
i nie tylko go importuję ale dołączam tutaj do importów
nie do deklaracji tylko do importów mat icon modul i
teraz mogę używać tutaj w html i teraz nie podaję nazwy ikony tutaj jako
parametr tak też można ale mogę podać nazwę ikony tutaj na przykład menu
i teraz jak przejdziemy sobie tutaj widzę o jest ikonka
menu dodam jeszcze jakiś jeden przykład powiedzmy favorite
person pojawiają się kolejne ikony żeby
tutaj odstępu trochę dodać pomiędzy nimi to dodam jeszcze display
flex i justify content
space between czyli pomiędzy ikonami żeby
jakaś przestrzeń powstała może
w ten sposób w jaki sposób to działa podaje tekst po
prostu pomiędzy tagiem otwierającym zamykającym i w tym miejscu pojawiają się ikony
jeśli pamiętasz z instalacji tutaj dodaliśmy odpowiednio
material icons czcionkę i działa to przy
użyciu tak zwanych ligatur czyli jak zobaczymy tu sobie dokumentację
angular material moduł nasz tutaj mat icon
module w komponent mat icon działa w ten sposób że jeśli umieścimy
jakąś ikonę pomiędzy tagiem zamykającym otwierającym to material
dodaje tutaj odpowiednie klasy dzięki którym tutaj
dodana czcionka material icon pozwala wyrenderować ikony i
tutaj jeśli przyjdziemy sobie do linka który znajduje się w tej dokumentacji tu jest informacja
właśnie o font icons czyli o czcionce która zawiera ikonę
i zamiast tekstu zamiast liter innych symboli wyświetla
odpowiednie znaczki i teraz mi nie używać jakiegoś specjalnego kodu tylko tak
zwane ligatury na przykład jeśli masz kilka liter pod rząd i chcesz
żeby one się łączyły razem no to może być ligature tutaj
ligatury są użyte w inny sposób mianowicie jeśli kilka znaków występuje obok siebie pod rząd
no to zastępowane są jedną ikoną czyli jeśli masz załączony tutaj styl właśnie
w ten sposób jak my lub możesz samodzielnie także przechowywać całe
taki właśnie styl u siebie w aplikacji to pozwala tobie po prostu
na użycie klasy material icons i użycie odpowiedniej
sekwencji znaków które są połączone w jeden znak z czcionki przy użyciu właśnie
ligatur o ligaturach możesz to poczytać więcej jest tu
też link na ten temat ligatury są bardzo dobrze wspierane
w nowych przeglądarkach tu mamy
też tabelkę która zawiera informację właśnie jakie wersje obsługują ligatury
jeśli chcesz mógłbyś też podać kod znaku w ten sposób ale jak
byłoby to bardzo niewygodne czyli wracając do naszego przykładu
wystarczy że pomiędzy tagami użyjemy
odpowiedniego słowa kluczowego no i te litery są połączone w odpowiednią ikonę teraz
skąd wziąć nazwy ikon jeśli przejdziemy
do dokumentacji material zakładkę tutaj tools
i icons tools i icons no to ma tutaj bardzo fajny
taki przeglądarkę galerię komponentów i możemy
nie to że wybrać rodzaj ikony czy chcemy wypełnioną czy nie wypełnioną
okrągłą czy kwadratową czy wielo kolorową możemy
każdy z tych elementów tutaj wybrać i tutaj pod ikoną znajduje się
słowo kluczowe które musimy użyć ciekawostką jest to że jest czcionka czyli jeśli użyjemy
na przykład tutaj two tone albo użyjemy czcionki właśnie w
ten sposób czarnej to pamiętasz są to litery
jest to czcionka czyli jeśli nadamy kolor tej czcionce no to
taki kolor się pojawi także na ikonach czyli
powiedzmy dodam tutaj jeszcze taki icons bar dodamy
mu jeszcze jakiś margines w ten sposób
okej i w drugim umieszczę powiedzmy tutaj
jest dom czyli zakończone i poszukamy
jeszcze jakiegoś krzyżyka tutaj mamy także różne kategorie
używając kategorii jest nam łatwiej przejrzeć dlatego że
w tych kategoriach mamy mniej elementów do wyboru więc łatwiej
nam się tutaj poruszać mamy chat content
editor file i kilka
innych jeszcze kategorii ja tutaj poszukam właśnie
mamy check i mamy closed powiedzy że uzyjemy check
tak czyli
mogę użyć tutaj koloru w
ten sposób jeśli użyje koloru powinien się pojawić zobaczmy jest
to tutaj zielone mogę także użyć specjalnego atrybutu
kolor który wybierze kolor z naszej palety czyli używając koloru
na przykład warning albo primary czyli na przykład tutaj przy
favourite użyje color primary
natomiast do person użyjemy color accent nie muszę
podawać konkretnego kodu koloru lub nazwy tylko kolor zostanie dobrany do
aktywnej skórki czyli jak widzisz tutaj mamy skórkę takie mamy tutaj
kolory tych ikon czyli właśnie korzystając z tego
tutaj mechanizmu material design możesz dobrać odpowiednie
ikony czyli ja tu powiedzmy jeszcze zajrzę do kategorii na przykład social mamy
osoby grupę zobaczmy
sobie jeszcze nawiagacja kategoria
nawigacja mamy różne strzałki mamy takie menu pionowe
more vert tu zobaczmy jeszcze coś takiego czyli dodamy sobie chat
more vert okej
pousuwam tutaj te niepotrzebne kolory okej
i zobaczmy jak to wygląda okej
mamy sobie tego różnego rodzaju ikony teraz one są tylko wskaźnikami
czyli jak widzisz ja nie mogę ani w nie kliknąć mogę je zaznaczyć jak one zachowują się
jak tekst jeśli skopiuje wkleję jak widzisz zostaje dokładnie tekst
który się znajduje pod tymi ikonami co musimy zrobić żeby one
były bardziej użyteczne ikony mogą istnieć samodzielnie
w ten sposób jako jakieś elementy właśnie nawigacji mogą
także być elementem tekstu czyli powiedzmy że jeśli
tutaj dodamy sobie akapit w
ten sposób to ikonę mogę gdzieś pomiędzy czyli
na przykład w ten sposób tylko jeśli ikonę umieszczę po
środku w tekście ona będzie no właśnie dość duża jak widzisz
po większy tutaj rozmiar linii nie wygląda to zbyt elegancko jeśli
ikona chcę żeby była częścią tekstu znajdowała się gdzieś w tekście lub
przycisku lub innym elemencie który właśnie jest liniowy tekstowy to
musisz podać odpowiednie atrybuty inline i ten atrybut inline
taka ikonka jak widzisz dopasowuje się do rozmiaru tekstu i wygląda
to już bardzo elegancko możemy teraz na przykład użyć
ikonek w ten sposób okej czyli
jest to jedna możliwość możemy także ikonki połączyć z innymi komponentami
na przykład do naszego app module ja tutaj material examples module
dodam jeszcze jeden module będzie to mat powiedzmy
batch module i mat tooltip tooltip
module i możemy tutaj na przykład do tych przycisków indicator
example component możemy dodać na przykład odpowiedni tooltip i
powiedzieć że to jest na przykład main menu to
jest powiedzmy contacts tu
będzie powiedzmy messages i tu
będzie mat tooltip more
options i teraz wystarczy dodamy sobie mat tooltip do takiej ikony
i teraz najeżdżając na element widzisz dostajemy odpowiednio tutaj
taki chmurkę z informacją i bardzo ciekawe że ona właśnie od razu sama znika
i jej pozycja tutaj powinna dopasować się do ekranu czyli jeżeli na przykład jesteśmy wyżej albo
niżej to ta ikonki te tooltipy będzie tak pojawić
żeby one nie wychodziły gdzieś poza ekran żeby były zawsze widoczne a ten angular
sam dopasował taką pozycję żeby była najlepiej widoczna
co możemy jeszcze zrobić powiedzmy że tutaj mam ilość wiadomości
albo jakieś zaproszenia to możemy dodać także
mat batch i tu mogę podać
na przykład wartość że mamy kilka
nowych zaproszeń na przykład dwie osoby nowe nas zaprosiły
pojawi nam się tutaj taki komunikat tak samo mogę powiedzieć że mamy
nieodczytana wiadomości na czacie ten mat batch może
także mieć kolor czyli możemy na przykład uzyć sobie któregoś z kolorów
na przykład naszego accentu naszej skórki
i pojawił się widzisz on jak widzisz w innym kolorze niż tutaj domyślny kolor występuje
on także w kilku rozmiarach czyli możemy na przykład dodać sobie tutaj
informacje jakąś i
mamy wariant big medium i small czyli tutaj
to inline jak widzisz nam nie działa elegancko spróbujmy small i jest
to mniejszy rozmiar tak czyli możesz używać tych etykietek
w rozmiarach różnych i w różnych kolorach możemy
używać tooltip'ów nie mniej są to tylko wskaźniki tak
ale nie mogą w żadną interakcję wejść nie mogę tego odczytać one tylko informują
nas o pewnym stanie jeśli chcielibyśmy wchodzić w interakcje z tymi elementami no
to musimy zrobić tutaj wersję bardziej interaktywną i do tego będą
potrzebne nam przyciski ale przyciski omówimy już w kolejnej lekcji tak
więc do zobaczenia