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+
Na pewno słyszałeś o google material design czyli
zestawie styli i komponentów do budowania bogatych złożonych
interfejsów w tej lekcji skorzystamy z angular material
czyli właśnie material design zasad komponentów przygotowany specjalnie
no właśnie do współpracy z angularem tutaj na stronie material
angular jak wpiszemy sobie to guides no to w sekcji getting started
oczywiście krok po kroku jest proces instalacji i on składa się z sześciu
kroków i teraz możemy po kolei wykonać te wszystkie kroki ręcznie
a możemy także skorzystać z alternatywy a mianowicie
skorzystać z mać z angular schematics zwany inaczej devkit czy jest zestaw takich
generatorów które pozwalają doinstalować do naszej aplikacji pewne wtyczki
pluginy tu skorzytam z polecenia ng add i po ng add możemy
podać nazwę pakietu który zawiera generatory tak pakietów jest
więcej my na razie skorzystamy sobie z tego ng add ja
to wkleję do terminalu czyli tutaj terminal ng add angular material
zainstalujemy to przy użyciu właśnie tych gotowych
schematów gotowych generatorów a następnie żeby nie było tu automatycznie
coś się zmienia nie wiemy dlaczego sprawdzimy po kolei z tymi
krokami czy faktycznie generator prawidłowo te kroki wykonał więc jeśli będziesz
chciał chciała wykonać te kroki ręcznie możemy możesz prześledzić
to razem ze mną jeśli nie można po prostu użyć
tego generatora polecam do końca te lekcji zostać zobaczyć po
kolei te kroki będziemy wiedzieli co ten generator za nas zrobił więc
w przyszłości gdy użyjemy tego generatora nie będzie też niespodzianek będziemy wiedzieć co
się stało w aplikacji i tutaj jeśli spojrzymy on nam zadaje pytania
ten generator między innymi pyta jakiej skórki chcemy użyć jeśli przejdziemy na stronę
tutaj material to zobaczysz że możemy tutaj wybrać sobie różne skórki
czyli różne zestawy kolorów material design opisuje
skórki palety dużo bardziej dużo
bardziej rozbudowany sposób on tu zostawia palety kolorów o tym
możesz tutaj wszystkim poczytać na stronie material my nie będziemy się tym skupiać
my skupimy się na części angularowej czyli wybiorę
sobie którąś tutaj skórkę może być indigo pinik albo deep purple
amber w razie czego będziemy mogli tą skórkę później zmienić kolejne
pytanie które zadaje nam generator to czy chcemy tutaj użyć biblioteki
hammer js do obsługi gestów i ja to włączę być można w każdej
chwili też pokażę ci w którym miejscu wyłączyć no a my wybierzemy sobie wszystkie możliwe opcje
zobaczymy co ten generator wygeneruje w naszym projekcie czy
chcemy moduł animacji uruchomić także akceptuje tutaj wszystkie opcje
dostępne najwyżej będziemy mogli wyłączyć to czego nie będziemy używać i
co się stanie on do naszego pliku package json doda potrzebne biblioteki
a następnie zaciągnie je pobierze z repozytorium
npm czyli note package management czyli npm'em
zainstaluję te wszystkie elementy ta skórka którą wybraliśmy powinna wyglądać
mniej więcej w ten sposób to jest ta którą wybraliśmy i teraz zobaczymy
po kolei czy on wprowadził zmiany spójrz tutaj update
mamy listę plików które zostały zmienione więc tak pierwszym krokiem tutaj
powinno być faktycznie zainstalowanie tych zależności i on tutaj zrobił za nas czyli zainstalował
angular material angular cdk angular animations hammer js
wszystkie potrzebne biblioteki nam tutaj za nas automatycznie zainstalował
następnie jeśli chcemy mieć animacje tutaj powinniśmy dodać moduł
browser animations module do naszego głównego modułu więc
sprawdźmy czy to się faktycznie stało otworzę app module i tu jak widzisz mamy browser animations
module zaimportowany dołączony tutaj do importu pierwszy krok wykonany
został za nas gdybyśmy nie chcieli tych animacji no to
trzeba i tak ten moduł załączyć aczkolwiek zamiast browser animations dołączamy noop
animations module czyli gdybyśmy nie chcieli animacji tutaj zamiast tego browser animations module
trzeba było umieścić właśnie taki noop animations module i
tutaj go dodać także do naszych modułów okej
kolejnym krokiem tutaj jest dodanie odpowiednich komponentów które
będziemy używać więc on tego nie zrobił dlatego że tutaj pizza party module
czegoś takiego nie mamy w aplikacji więc to będziemy musieli zrobić ręcznie a o tym za chwilkę
skórkę tutaj on dołączył skórkę tą którą wybraliśmy
czyli możemy do pliku styles.css dołączyć sobie taki import
jak najbardziej takie coś zadziała czyli jeśli takie
coś bym dołączył do naszego pliku styles scss tutaj
jak najbardziej można by to zrobić tutaj
zobacz też co zrobił z tego wysokość html body na 100%
dlatego że budujemy aplikację nie stronę internetową czyli chcemy żeby ta
strona miała całą wysokość ekranu a także usunął do domyślne
marginesy z przeglądarki żeby nie było obramówki
dookoła tutaj czcionkę roboto czyli czcionkę domyślną
dla material oczywiście te wszystkie opcje musisz zmienić polecam tobie jednak
zostawić na pewną wysokość 100% jeśli będziesz w aplikację a nie stronę internetową bo o tym
sobie powiemy usunąć marginesy żeby aplikacja nasze była od deski do
deski mówiąc kolokwialnie żeby nie było tutaj żadnych odstępów marginesów
dookoła naszej treści okej obsługa gestów
hammer js i hammer js musi być dodany w pliku main więc
zobaczymy czy ten krok został także wykonany za nas main ts mamy hammer js
tutaj nic więc już nie trzeba robić hammer js musi być tylko podpięty żeby on nasłuchiwał
odpowiednich zdarzeń biblioteka angular jeśli wykryje tego hammer js
no to automatycznie nasłuchuje odpowiednich zdarzeń gestów takie
jak przesuwanie powiększanie i tak dalej material-icons
dla angulara tutaj widzisz po prostu można by dołączyć w ten
sposób domyślnie i teraz te style widzisz tutaj one
się nie pojawiły i spojrzymy na angular json
czyli na konfigurację tutaj budowanie aplikacji style pojawiły się tu jest
to wydajniejszy sposób bo on nie musi rekompilować razem z sass'ami
tylko te css'y są po prostu dołączone tutaj sklejone razem
ze wszystkim stylami możesz oczywiście dołączyć je tutaj ale będzie
to spowodowało jeszcze dłuższe budowanie css'ów tu po prostu dołączaj je gotowe okej
w takim razie gdzie on tutaj dołączył nasze czcionki
tutaj jak widzisz mamy dwa linki mamy link do czcionki
w trzech tutaj rozmiarach 300 400 500 z trzech różnych
wariantach grubości tej czcionki a także mamy
tutaj link do czcionki zawierające ikony czyli jest
to icon font czyli ikony nie są jako pojedyncze pliki które będą się
jeden po drugim pobierać tylko wszystkie ikony material możemy pobrać od razu
jako jeden plik czcionki o tym sobie jeszcze powiemy tutaj
masz dwie możliwości tutaj jak widzisz on to ładuje bezpośrednio z cdn google i ma to tą zaletę
że jeśli ktoś już był na innej stronie która z tego korzysta jest szansa że ma
to zacache'owane w przeglądarce jeśli chcesz nie ma
problemu żeby te pliki po prostu pobrać dodać tutaj do katalogu assets
i załączyć lokalnie z twojej aplikacji ja zostawię
tą wersję z cdn czyli content delivery network co
nam zostało tu jest konfiguracja modułów tego nie musimy robić
czyli wszystko wygląda dobrze jedyne co pozostało nam zrobić to faktycznie
używać tego angular material design spójrzmy
więc jak to wygląda w przeglądarce tutaj na localhost 4200
jest chroniona przeglądarka i jeśli się przyjrzymy
to jest tutaj inna czcionka i jest to dokładnie nasza
czcionka roboto taka czcionka tutaj nam się znajduje i jak spojrzymy tutaj
tutaj na body margines 0 wysokość
100% czyli jak widzisz po bokach nie mamy marginesów to nam się przyda jeśli będziemy
aplikację aplikacje która będzie miała paski na górze na dole nawigację
boczną żeby to wszystko ładnie przylegało do krawędzi okej
czyli mamy zainstalowany tutaj material design components ale
żadnych komponentów jeszcze nie używamy tym zajmiemy się już
w kolejnej lekcji tak więc do zobaczenia