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+
Gdy mamy już zainstalowany angular material moglibyśmy
po prostu przejść do korzystania z komponentów które zawiera ale
nim zaczniemy omawiać poszczególne komponenty chciałem ci pokazać kilka wbudowanych
przykładów które są załączone do właśnie angular material jeśli
użyję narzędzia angular cli i opcja generate pozwala nie tylko generować
wbudowana opcje takie jak komponenty usługi ale pozwala mi także wykorzystać generatory
które zainstalowaliśmy czyli jak mamy angular material material
to mogę tutaj po dwukropku podać nazwę
generatora ja nie podam nazwy generatora tylko podam opcje help i zobaczymy
jakie generatory są tutaj dostępne w wersji generatora
w wersji schematics którą posiadam zainstalowaną jak przewiniemy sobie trochę
niżej to mamy available schematics i collection tu
jest zbiór dostępnych generatorów których możemy użyć mamy tutaj formularz
dashboard nawigację i nim przejdziemy dalej chciałbym ci podać kilka gotowych
przygotowanych przez twórców ekranów żeby się zainspirować
zobaczyć jak to może wyglądać jak to może działać a następnie spróbujemy
takie ekrany zbudować całkowicie samemu okej czyli zaczniemy od czegoś
bardzo ogólnego powiedzmy od ekranu nawigacji czyli
tak ng generate
tak samo angular material i
następnie podaję tutaj jedną z tych opcji będzie to nav i teraz
nim to zrobię warto by także stworzyć sobie jakieś dodatkowy moduł żeby
nie generować tego po prostu głównym katalogu więc jeszcze nim to zrobimy ng generate module
nazwę to material examples material examples dołączę
ten moduł do głównego modułu aplikacji skrótem m i wygeneruję od razu
moduł routingu żebyśmy mogli sobie dodać nawigację
do tych komponentów które utworzymy okej
mamy tutaj moduł następnie do tego modułu wygeneruję
odpowiednie komponenty czyli ng generate angular material
tutaj ta opcja nav o której przed chwilą
wspominęliśmy i tu podaję ścieżkę i nazwę komponentów ścieżka będzie wyglądała
w ten sposób czyli najpierw ścieżka do modułu następnie mogę podać katalog na przykład
pages tutaj zrobimy to jako layout od razu
nazwa komponentu layout czyli będzie to layout dla naszego modułu i
wygenerujemy go ze schematu angular material na material
examples layout i zobaczymy tutaj powstał już moduł
czyli jak zobaczymy sobie app module
tu powinien być zamontowany nasz material examples module
co zrobiła flaga m app następnie tutaj
jak widzisz powstał layout module
layout material examples routing module layout
layout component i automatycznie tutaj widzisz zostały dodane komponenty materiala
czyli z pakietu angular material zostały zainstalowane odpowiednio wszystkie elementy które zawiera
ten nasz layout komponent czyli toolbar button site nav icon list
i teraz tak jeśli przejdziemy do routingu to
możemy od razu powiedzieć sobie że jeśli ktoś wejdzie na główną stronę aplikacji to
ma mu się załadować właśnie nasz komponent layout layout
komponent upewnijmy się jeszcze że w app component html
nie ma niepotrzebnych rzeczy czyli na głównym ekranie załadujemy tylko nasz
layout czyli router-outlet wyświetli tylko komponent layout i zobaczmy
jak to się zaprezentuje na stronie tutaj jak widzisz jest mały problem bo niby
style załadowaliśmy a coś tu jest nie tak załadowaliśmy style skórki
jak tutaj widzisz komponenty się wyświetlają mają wymiary
nie mają kolorów i tutaj mamy komunikat że nie udało się załadować
głównej skórki główna skórka to jest coś co
pamiętasz dodawaliśmy tutaj do pliku angular json właśnie
samo nam się dodało przez generator i teraz za każdym razem jak ten plik
się zmienia gdy coś dodajemy lub zmieniamy należy zrestartować serwer
ja tu korzystając z okazji zmienię tę skórkę powiedzmy wybiorę
sobie którąś z gotowych indigo pink listę skórek
dostępnych można znaleźć na stronie tutaj angular material w dokumentacji i zrestartuję
serwer czyli przerwa przerywam
jeszcze raz uruchamiam ng serve
w skrócie mogę użyć po prostu s i gdy to mi wystartuje
powinien załadować jeszcze raz ten plik konfiguracyjny i zapytać
nową skórę czyli na nasz tutaj suchy pusty komponent
nie ma kolorów ma tego rozmiary rozmiary ładowane są bezpośrednio z komponentu natomiast
kolory ładowane są ze skórki dzięki temu wiele komponentów może
współdzielić te same style w przeciwieństwie do styli izolowanych
styli komponentów które są specyficzne dla konkretnego komponentu
okej tutaj nam załadowało i jak widzisz od razu
nabrało nam to kolorów tutaj mamy menu i to
jest główny komponent nawigacyjny zawiera pasek u góry zawiera menu i
zawiera tutaj listę linków kiedy mamy więc główny komponent
layoutu spróbujmy wygenerować kilka dodatkowych komponentów i
zagnieździć je wewnątrz tego naszego głównego komponentu
layoutu czyli tak jak poprzednio wygenerujemy sobie kilka nowych komponentów ng
generate angular material i
co tam jeszcze było tam był dashboard i tak
samo jak wcześniej wygeneruje to w odpowiednim katalogu czyli tak jak poprzednio
będzie to material examples i
tutaj nazwa te podkomponenty wewnętrzne umieszczę w jakimś podkatalogu
na przykład nazwę go pages żeby komponenty które są głównymi
ekranami znajdowały się w osobnym katalogu nie mieszały się z pozostałymi komponentami
i będzie to na przykład dashboard example
i w ten sposób jeszcze kilka komponentów wygenerujemy i
zamieścimy tutaj w layout komponencie i teraz te poszczególne komponenty
będziemy tutaj umieszczać jako children
czyli jako dzieci tego komponentu żeby
one w wyświetliły się w htmlu tutaj wewnątrz
tego komponentu mamy add content here czyli tutaj ta cała
biała przestrzeń w tym miejscu chcemy żeby ładowały się komponenty więc zagnieździmy
router outlet i
teraz te wszystkie dzieci które to wymienię będą zagnieżdżały się wewnątrz
layout komponentu czyli jak podam tu ścieżkę powiedzmy path i główną ścieżką
będziemy ładowali dashboard example component to komponent
zapisze i w tym czasie uruchomimy generowanie kolejnego
przykładu oprócz dashboard tam była tabela
z danymi okej
i zobaczymy jak się zmienił nasz html ale w tym miejscu gdzie była
informacja place content here tutaj umieściliśmy nasz dashboard i
ładują nam się karty karta ma menu jakąś przykładową
treść czyli jest to dashboard on powinien się też elegancko skalować
i jeszcze jest fajny przykład bo dla różnych rozmiarów on
wykrywa szerokość ekranu jak widzisz zmienia układ zależny od
szerokości ekranu menu także jest zablokowane dla dużego
ekranu dla mniejszego ekranu menu zwija się i zmienia
swój tryb na overlay czyli pojawia się na wierzchu zamiast z boku
są to bardzo fajne funkcjonalności i angular material dokładnie
angular material component development kit zawiera masę tego typu przydatnych narzędzi
ok tutaj musimy wygenerować komponent table
więc ja uruchomię generowanie jeszcze jednego komponentu i na tym poprzestaniemy
będzie to address form i
tutaj także dopiszę sobie adres for tym razem nazwiemy
ten link table table
example component okej i następnie
ostatni czyli formularz adresowy powiedzmy
nazwiemy go adresowany address
form example component i następnie już można przejść do tych komponentów w
naszym layout'cie mam tutaj 3 linki więc odpowiednio je pozmieniamy
będzie to dashboard data
table powiedzmy i address form
zamiast zwykłych linków użyje router link to już jest
zwykłe linki odświeżały przygotowały mi stronę na temat router link przeładuje je
przy użyciu javascript czyli będzie to odpowiednio pusty link do dashboardu table
do naszej tablicy i adres dokładnie
tak samo jak tutaj ta ścieżka to będzie ścieżka
do której będzie kierował nasz link okej zapiszę to wszystko zobaczmy
aplikację późniejszej 3 linki pierwszy link to
jest oczywiście nasz tutaj dashboard drugi
link to jest tabela która tutaj w przykładzie zawiera sortowanie
filtrowanie paginacje i tak dalej bardzo
fajny przykład i mamy w ostatni link nasz
formularz adresowy który zawiera różne pola razem z animacjami
z walidacją błędów format jest dynamiczny możemy dodawać pola
mamy też różne typy kontrolek wysyłanie
wyświetla komunikat jak widzisz mamy dużo fajnych
przykładów już wbudowanych jest to też sposób na naukę polecam
tobie właśnie zajrzeć przejrzeć zobaczyć jak wygląda wygenerowany kod źródłowy my
nie będziemy korzystać z tych gotowców tylko omówimy sobie poszczególne elementy
poszczególne komponenty tych api i zaczynając od małych przykładów
postaramy się zbudować podobny interfejs podobny ui ale
wiedząc krok po kroku co się dzieje mielibyśmy troszkę większą kontrolę tak
więc do zobaczenia w kolejnych lekcjach