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 przygotujmy bazową strukturę projektu z której
będziemy korzystać w kolejnych lekcjach oczywiście w tym celu wykorzystamy angular
cli i zanim to zrobię tutaj użyjemy visual studio code żeby
przygotować sobie środowisko czyli wybiorę sobie tutaj jakiś folder powiedzmy
katalog projekt i w tym katalogu utworzę edytor visual
studio code tutaj powinieneś widzieć teraz wszystkie pliki które znajdują się w tym projekcie na razie jest
to pusty folder jeśli chcemy korzystać z konsoli czyli z narzędzi
tutaj z wiersza poleceń mamy opcje widok i integrated terminal
lub control tylda control tylda ten znaczek tutaj przy klawiszu 1
na klawiaturze ok ja tu sobie zrobie pełny ekran ok
control tylda control b i wygenerujemy sobie tutaj nowy projekt
ja w tym katalogu projekt utworzę jeszcze jeden katalog ale wykorzystam
do tego celu nasze tutaj narzędzie ng czyli angular cli tu
jest masa różnych opcji z poprzednią wersją jest tu kilka różnic co
będzie dla nas istotne tak teraz będzie istotna tutaj możliwość dodania nowej biblioteki do
projektu o tym trochę później generate czyli wygenerowania
plików no i w tym momencie oczywiście wygramy sobie nowy projekt o
pozostałych elementach później tutaj w dalszych częściach tego kursu czyli
ng nie generate tylko new po ng new zaczynamy nowy projekt i zobacz sobie
opcję help które są dostępne i jeśli generujesz nowy projekt
to możesz wybrać sobie niestandardowe kolekcje czy niestandardowe
schematy generowania jeśli użyłeś ng add i dodałeś jakąś bibliotekę
to możesz użyć jakiś specyficznych zestawów jakby szablonów z których
ma być utworzony projekt my skorzystamy z domyślnych katalog może na
sucho to wypróbować możemy nadpisać plik jest możliwość dodania szablonów
i styli wewnątrz komponentu ja tym razem tego nie będę
robił prefiks aplikację zostawimy app wygenerujemy
aplikacje od razu z routingiem niech nam scommituje pierwszą
tutaj generowany kod do gita niech zainstaluje wszystkie
zależności i tu jak widzisz jest opcja pominięcia testów w tym
kursie będziemy chcieli napisać testy tak więc tą opcje tutaj nie będziemy jej używać
domyślnie testy się wygenerują i rozszerzenie dla styli
będzie tu u nas scss czyli to będzie sass ok
czyli ng new nazwa projektu na przykład angular
myślnik projekt okej dodajmy
sobie tutaj jeszcze opcja routing opcje i dodamy opcję
style scss zobaczmy
utworzyły się pliki tu postawisz katalog
za chwilkę przełączy się w ogóle z edytorem i jeszcze głębiej w ten katalog żebyśmy
może byśmy byli już tylko w katalogu w którym znajdują się nasze pliki
i tu się na dole instalują nasze wszystkie biblioteki czyli w package json
tutaj w packege json on tu dodał wszystkie potrzebne biblioteki
wszystkie narządzia i automatycznie za nas się instaluje ta opcja intall jej nie
wyłączyłem czyli domyślnie nam się instaluje i mamy tutaj też pamiętaj skrypty czyli
jeśli chcesz ten projekt uruchimić po raz kolejny to już nie musisz instalować globalnie angular
cli wystarczy że tutaj wejdziesz do projektu uruchomisz npm
install żeby pobrać wszystkie potrzeby zależności i wykonasz npm
na przykład start albo npm run build i
te skrypty wykonają się już z tego projektu z tego katalogu czyli nie musisz instalować
gdzieś w systemie operacyjnym tych jeszcze raz tych wszystkich narzędzi
my jednak tutaj mamy je zainstalowane bo będziemy korzystać z nich nie tylko do
budowania aplikacji ale także do właśnie generowania nowych projektów do generowania
nowych plików nowych modułów w naszej aplikacji tutaj
wszystko widzę poszło dobrze są tu jakieś warningi jednak tutaj
przeważy te warningi jak też uruchomić npm audit fix npm audit żeby dowiedzieć się co to za warningi one
przeważnie dotyczą nie tyle kodu angulara co kodu narzędzi te narzędzia
mogą mieć jakieś dziury bezpieczeństwa tego typu rzeczy pamiętaj
jednak to są tylko narzędzia to znaczy że one uruchomiamy tylko je na
komputerze lokalnym komputerze dewelopera więc nie są one wystawiane
jakby na świat zewnętrzny sprawdźmy
czy ten nasz projekt działa mamy dwie opcje możemy użyć tutaj właśnie tego
polecenia ng zainstalowanego w systemie globalnie żeby ng serve czyli
zaserwuj uruchom serwer lokalny deweloperski ale jeśli mam projekt już
zainstalowany tutaj pamiętasz mamy package json to mogę robić po prostu
tutaj npm start które
jak widzisz zmapowany jest na samo polecenie npm start jest o tyle wygodniejszy
żeby każdy projekt może wystartować w ten sam sposób uwaga z którego katalogu to uruchamiasz
bo jak widzisz mamy projekt i w projekt mamy dopiero angular projekt więc
ja się tu przełączę jeszcze czyli plik otwórz katalog wejdę tu w głąb
w ten nasz projekt także tutaj widzę jak widzisz na najwyższym
poziomie mamy package json i jeszcze raz wykonam
to samo polecenie npm start i
tutaj jak widzisz nam serwer wystartuje na localhost port 4200 ten adres sobie
skopiuję on tu się będzie budował ja w tym czasie się przejdę do angular tutaj
to na przykład chroma polecam tobie także skożystać z przeglądarki
chrome będzie tobie także wygodniej tu pokazywał jakieś opcje będę korzystał z narzędzi deweloperskich
po prostu przykłady wszystkie przyciski opcje konfiguracyjne też będą w
tym samym miejscu oczywiście możesz korzystać z firefoxa jeśli
chcesz korzystać z innej przeglądarki starszej na przykład internet explorer to
musisz pamiętać oczywiście tutaj w pliku polyfills żeby odkomentować
polyfill'e tak czyli odkomentować pliki które uzupełniają brakujące funkcjonalności
w starszych przeglądarkach jeśli chcesz na przykład 9 10 11 ja
tutaj nie będę się skupiał na kompatybilności więc niektóre przykłady po prostu nie
działać tutaj pozostawiam tobie to jeśli chcesz faktycznie
wspierać starsze przeglądarki to gdzieś pojawia się błąd muszę zobaczyć czego brakuje
i uzupełnić to to odpowiednim polyfill'em tutaj z tych brakujących
jeśli wszystko zadziałało to powinniśmy zobaczyć taką ładną wizytówkę tutaj angulara
linki tutaj do dokumentacji do tutoriala online
czyli projekt jest skonfigurowany teraz nim przejdziemy dalej jeszcze jedna
ważna rzecz tutaj w pliku angular json mamy konfigurację tego naszego narzędzia
angular cli tu jeszcze może nam wyskoczyć node
więc zezwalaj na dostęp chcemy żeby ten serwer był dostępny
okej i teraz tak w jednym jakby katalogu wygenerowanym
możemy mieć tak naprawdę kilka projektów jak widzisz tutaj jest mamy już
dwa mamy angular projekt i osobne angular project służące
do testów end-to-end czyli testów jakby integracyjnych testów
funkcjonalnych i mam tutaj różne konfiguracje dla narzędzi
z których składa się ten cały nasz ng mamy architekta który zajmuje się
jakby konfigurowaniem budowaniem generowaniem projektu i
na przykład ten główny projekt możesz określić w którym katalogu czy możemy inną strukturę
katalogu przyjąć domyślna możesz tutaj robić nowe projekty jeśli będziesz je tworzył kilka
możesz wskazać mu inny katalog w który ma się znaleźć może być to aplikacja
lub biblioteka prefiks komponentów i jak
tutaj widzisz schematix jak wspomniałam wcześniej możesz doistalować dodatkowe biblioteki
schematix pozwala tobie no właśnie dodać nowe generatory czyli na przykład tutaj
jak widzisz mam ustawienia dla komponentu i jak pamiętasz przy generowaniu projektów
wybrałem opcję scss czyli każdy wygenerowany na nowo komponent
będzie miał plik nie css tylko powinien mieć wygenerowane automatycznie plik
scss jak widzisz główny komponent aplikacji od razu ma plik typu sass
czyli jest scss i jak zobaczymy komponent on to też ma odpowiedni prefiks
tak zgadza się z konfiguracją więc zamiast zmieniać to za każdym razem w każdym pliku
wygenerowanym właśnie możesz po prostu wejść sobie w angular json
i tutaj także zwróć uwagę że mamy scheme co to znaczy
oznacza to że tu ja nie muszę znać wszystkich poleceń na pamięć
muszę szukać ich w dokumentacji tylko jeśli edytor obsługuje coś takiego
jak json scheme to tutaj po prostu mogę wziąć control spacja jak
widzisz on tutaj ma listę wszystkich dostępnych opcji na przykład flat
i powiem tak że dokumentacja która mówi co ta opcja robi na przykład jeśli wstawię opcję
flat to nowe komponenty będą generowane bez katalogów inline
style oczywiście uwzględnij style w środku w pliku komponentu inline
template uwzględnij template w komponencie możemy też ustawić inne tutaj domyślne
opcje tu też możemy pominąć testy my tego także nie będziemy
robić czyli tu już jakby nic więcej nie zmieniam wpisałem opcje domyślne
jedną opcję którą zmieniłem to będzie scss żebyśmy mogli tutaj popracować sobie nad
stylowaniem komponentów mam także opcję dla architekta
dla różnych poleceń na przykład na build i serve tak czyli
różne polecenia które możemy tutaj raz skonfigurować parametry
żeby nie podawać ich za każdym razem co to znaczy że tutaj jeśli
wykonam polecenie ng powiedzmy test to
takie polecenie ma tutaj wiele różnych opcji i mogę te opcje za każdym razem podawać
a mogę to wszystkie opcje po prostu skonfigurować tutaj raz zapisać
tak więc później kto będzie uruchamiał każdy z tych poleceń będzie
zawsze spójnie używał tych samych opcji czyli jak widzisz tutaj całę to narzędzie
będzie składać się właśnie z takich właśnie wtyczek pluginów czyli to jest bardzo konfigurowalne możemy
także definiować tutaj własne polecenia czasem tak bywa aby projekt był w jakiś sposób
sprawdzony spakowany zdeployowany nie musimy używać narzędzi typu
gulp grunt i tego typu można po prostu wykorzystać te
skrypty architekta które tu już się znajdują ewentualnie skrypty schematics lub
skrypty angular devkit które znajdziemy po prostu gdzieś w internecie i
to tyle jeśli chodzi o generowanie i konfigurowanie projektu a
przynajmniej na razie w kolejnych lekcjach zaczniemy już pracę z tym projektem
oczywiśćie jest tu więcej opcji konfiguracji ale będę je
umawiał dopiero kiedy będziemy ich używać w kolejnych sekcjach zajmiemy
się testami no to mówię wtedy do czego służą pliki konfiguracyjne tutaj testów
jakie są opcje możliwości dotyczące testów i tak dalej tak
więc do zobaczenia w kolejnej lekcji