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 tym momencie powinieneś już znać komponent mat list i powienieneś widzieć jak
konstruować takie proste listy czy to listy z kilkoma
wierszami czy z kilkoma kolumnami w tej lekcji pójdziemy
o krok dalej i spróbujemy zbudować takie bardziej na właśnie zaawansowane
rozbudowane przykłady list ja tutaj pozwoliłem sobie stworzyć
dwa nowe komponenty simple contacts list component który
znalazł się w katalogu components czyli wszystkie elementy wszystkie strony
znajdują się w pages czyli komponenty które są podpięte do routingu
umieściłem w katalogu pages żebyśmy widzieli których komponentów możemy nawigować
natomiast tutaj komponenty pomocnicze komponenty wizualne znajdują
się w ostatnim katalogu po prostu components i te komponenty wymagają jakiegoś rodzica
mianowicie jeśli przyjdziemy na przykład do simple contacts list component tutaj
musi znajdować input input pozwala rodzicowi przekazać dane i bez tego inputu
ten komponent niczego nie wyświetli ten komponent tutaj wyświetla naszą poprzednią listę
i tutaj kontakty ładuje po prostu przez input czyli
musi dostać od rodzica więc nasz list example component właśnie
do simple list tutaj przekazuje kontakty jako parametr
i jeśli spojrzymy na nasz przykład wygląda identycznie jak poprzednio mamy
też listę mamy dwie kolumny tym razem jednak ona ta lista jest zawarta
w dodatkowym komponencie jest to simple list i
w ten sposób zbudujemy jeszcze jeden przykład tutaj mam wygenerowany jeszcze
jeden komponent tutaj go wyświetlę jest
to app contact details list i w przeciwieństwie do
tej listy która zawiera wiele kontaktów i pokazywała tylko pojedyncze
małe informacje dla każdego kontaktu ten
tutaj komponent będzie zawierał jeden kontakt czyli
szczegóły jednego kontaktu czyli przekażę mu na przykład contacts i pierwszy element
z naszej tablicy kontaktów oczywiście żeby to zadziałało ten
komponent musi posiadać odpowiedni input kontakt
i dam mu też typ tak czyli zaimportuje
interfejs contact z naszej usługi abyśmy tu mieli informacje
szczegóły jak wygląda ten obiekt kontaktu okej czyli jeśli mamy ten komponent
tutaj skorzystamy także z listy ja pozbędę się tego napisu
użyjemy mat list podobnie jak ostatnio mat list item
powiedzmy w podobny sposób i umieszczę powiedzmy trzy takie
elementy mat list item razy trzy i teraz lista
oprócz zwykłego tekstu tak jak poprzednio oprócz kolumn może zawierać inne
elementy ja zacznę jednak od umieszczenia tutaj tekstu czyli
będzie to div i pamiętasz mat line czyli nasz główny
element listy właśnie ustawiliśmy na atrybut mat line i tu wyświetla nasz kontakt i
powiedzmy name no i analogicznie dodam takie informacje
tu do pozostałych i spróbujemy tą listę nieco ubogacić
o coś więcej niż sam tekst czyli mamy tutaj
name powiedzmy email
tu spróbujemy coś innego jeśli
nie mamy phone powiedzmy to w
ten sposób czyli sprawdzimy czy jest to telefon jeśli nie
ma telefonu to wartość domyślna
on tutaj krzyczy bo on wie z tego typu że nie mamy telefonu więc można
by do naszej serwis dopisać
że opcjonalnie może być to jeszcze telefon oczywiście telefon
jako string bo może zawierać już myślniki nawiasy i tak dalej okej
czyli nasz details tutaj może teraz zawierać telefon
telefon jest opcjonalny my chcemy sprawdzić czy istnieje możemy zrobić to w
ten sposób tutaj wyświetlić domyślną wartość no phone details i
teraz każdy element może zawierać na przykład tutaj jeszcze ikonę czyli
powiedzmy tutaj chcielibyśmy mat icon w ten
sposób mat icon i powiedzmy person zobaczmy
majka miles i ikona znajduje się
pojawia się z tej strony jak pamiętasz mat line to jestem główny element
on się pojawia z lewej strony zajmuje dostępną całą szerokość wszystkie pozostałe elementy
są automatycznie przenoszone na tą stronę jest to ok gdyby
to był jakiś przycisk czy informacja ale może chcielibyśmy żeby ikona faktycznie tutaj
znajdowała się przy każdej pozycji jeśli chcemy żeby ta ikona tutaj była
częścią tej głównej informacji no to musimy dać odpowiedni tutaj atrybut będzie
to mat list icon i jeśli zrobimy to w ten sposób ikona
znajduje się po tej stronie tu spróbuję jeszcze jakieś ikony znaleźć czyli
powiedzmy email czyli spróbujmy wszystkich tutaj wyszukać email mamy
dwa warianty mamy email voicemail i
alternated email okej czyli spróbujemy tutaj ikonę
też dodać w tym miejscu email
i tu spróbuję dodać ikonkę dla telefonu zobaczymy
czy jest taka ikona jest kilka
nawet telefonów zobaczymy jak to wygląda czyli jak widzisz karta lista szczegółów
może zawierać ikonę i pewne informacje mu tu odpisać odpowiednie nagłówki że
na przykład imię to email to ale jak widzisz ikony jakby oddają znaczenie
tych elementów bez potrzeby tutaj dodatkowego opisu i
to że ikony są tu po lewej stronie one są jakby częścią głównej informacji
nie stoi zupełnie na przeszkodzie temu żeby mieć tu jeszcze ikonkę albo przycisk
czyli te informacje dodatkowe te które będą po prawej stronie czyli jeśli chciałbym
tu umieścić przed mat button czyli pamiętasz może być to przycisk i
mat button jeszcze chcemy ikonę icon button
w środku mat icon i tu powiedzmy jeszcze
jest email spróbujmy przycisk email żeby można było po prostu
wysłać nawet email czy wiadomość do tej osoby możemy zrobić tak że czat email
może na początek email czyli powinien się pojawić to nam z tej strony jest
to przycisk jest klikalny bo mógłbym podobnie zrobić tak że dla telefonu
jako że jednak nie mamy tutaj telefonu to możemy zrobić przycisk
żeby był disabled jeśli
nie ma telefonu i tu phone
i mamy szarą słuchawkę nie można jej kliknąć dlatego że
nie mam żadnych szczegółów nie mamy podanego telefonu czyli jak widzisz możemy
do tekstu dodać tutaj jeszcze jakąś
ikonę i ta ikona stanowi część tą główną tej listy
ale też nic nie stoi nic na przeszkodzie żeby dodać tu kolejne informacje
kolejne kolumny tak różnie to w poprzednim przykładzie mogą być to ikony mogą być
to na przykład przyciski i teraz jeśli mamy listy to takie listy
szczególnie listy szczegółów mogą zawierać kilka sekcji i
oczywiście możemy takie listy podzielić czyli jak pamiętasz do każdego z
tych przykładów ja tu mogę jeszcze dodać mat divider czyli
taki rozdzielacz te elementy będą podzielone elegancko
tutaj takimi właśnie kreskami ale mamy jeszcze jedną
fajną rzecz mianowicie powiedzmy że chciałbym tutaj jeszcze jeden element dodać czyli
powiedzmy mat list
item i tu
w środku umieścimy div który będzie zawierał klasę mat line okej
i tu powiedzmy że co tam jeszcze zostało to pozycja tej osoby czyli
zrobimy sobie contact contact
position zobaczmy marketing
no i tu wypadałoby jeszcze jakąś ikonę pozycji dodać a tu pożyczę sobie jeszcze ten element
ikonki i tu gdzieś powinno być znowu
szukamy w tym narzędziu business
o na przykład taka ikonka zrobimy sobie business mamy
ikonę jednak tutaj widzisz mamy szczegóły personalne a tu mamy jakieś szczegóły
firmowe która firma które działy i tak dalej fajnie byłoby te sekcje od siebie oddzielić
i teraz możemy to zrobić mianowicie mogę tutaj dodać jeszcze taki element
ze specjalnym atrybutem subheader
i na przykład company details
jak widzisz ten element jest tutaj szary on też jakby
zajmuje tyle miejsca co element listy ale służy on do oddzielenia
poszczególnych sekcji czyli mógłby na przykład taki mat sub header
umieścić sobie całkowicie na górze tutaj jako przed pierwszym
elementem i powiedzieć na przykład personal details
w ten sposób czyli jak widzisz listy
możemy wykorzystać do faktycznie listowania wielu różnych elementów gdzie
te główne informacje są właśnie tutaj na początku elementu dodatkowe
informacje znajdują się na środku na końcu jako dodatkowe kolumny ale także możemy
pojedynczy obiekt jakąś pojedynczą porcję informacji podzielić
tutaj jako wiersze i wyświetlić właśnie jako listę szczegółów
i to tyle jeśli chodzi o szczegóły listę szczegółów
w tej lekcji w kolejnej lekcji spróbujemy te wszystkie elementy połączyć
zobaczyć co jeszcze można zrobić z listami i spróbować zbudować taki
bardziej praktyczny przykład tutaj dla naszych kontaktów tak więc
do zobaczenia