od Podstaw
6 godz. 45 min · Angular · Full-stack i Programowanie
Mateusz KuleszaSenior Software Developer, Konsultant, TrenerPierwsze dwa działy kursu są idealne dla osób które rozpoczynają swoją przygodę z Angularem i stanowią wprowadzenie do frameworka. Zaczynamy od prostych przykładów, gdzie budujemy formularz zapisu na newsletter. Jest to przykład pozornie prosty, ale dzięki łatwości z jaką Angular wprowadza dynamizm, manipulacje wyglądem a nawet animacje wcale taki nie będzie. Zobaczysz, że nawet prosty przykład możemy zamienić w interaktywny, dynamiczny interfejs, który wciągnie użytkownika!
W kolejnych sekcjach kursu nie robimy prostych ćwiczeń, ale krok po kroku budujemy prawdziwy projekt. Jeśli marzyło Ci się stworzenie i opubliklowanie eleganckiej strony WWW lub aplikacji z Twoim CV oraz listą projektów, to nie musisz marzyć dalej. Możesz podążać krok po kroku i z każdą lekcją budować własną stronę portfolio. Będziesz zaskoczony, że z podstawową znajomością JavaScript, HTML i CSS zaczniesz błyskawicznie tworzyć złożone eleganckie i interaktywne interfejsy użytkownika.
W kursie stawiam na produktywność. Koniec że żmudnym klepaniem setek lini HTML i CSS, koniec z zawiłym kodem jQuery. Wykorzystując bibliotekę Bootstrap i modyfikując gotowe elementy HTML możemy skupić się na tym co najważniejsze. Zobaczysz jak wykorzystać interpolacje i wiązania by struktura HTML i CSS zmieniała się sama po każdej akcji użytkownika. Dzięki poprawnemu użyciu mechanizmów Angulara, mozolna praca z DOM, którą znasz np. z jQuery staje się zbędna. Angular renderuje interfejs za Ciebie - prosto z danych które umieścisz w komponentach.
Już w pierwszych sekcjach kursu dowiesz się jak wykorzystać moduł formularzy w praktyce, by tworzyć automatyczne dynamicznie generowany formularze i pobierać z nich dane. Dowiesz się także jak znając wyłącznie podstawy JavaScript połączyć naszą stronę portfolio z serwerem i pobrać pliki JSON, w tym nasze projekty, opisy i zdjęcia ze zdalnego serwera!
Podczas pracy nad Twoim portfolio nie tylko poznasz podstawy pracy z angularem, ale w kilku lekcjach zagłębimy się na chwilę w samo działanie Angulara. O ile jest to wiedza zaawansowana, tak znajomość mechanizmów wykrywania zmian już na samym początku pracy z Angularem da Ci lepsze zrozumienie tego narzędzia i pozwoli pisać kod który będzie nie tylko prosty i czytelny ale też będzie działał błyskawicznie. W tym kursie nie tylko pokazuje jak czegoś użyć, ale kiedy, dlaczego oraz jak to działa od środka. Nawet jeśli Angular nie jest dla Ciebie nowością - ten kurs da Ci głębsze zrozumienie jego koncepcji.
Ten kurs przygotowałem dla osób początkujących w Angularze, ale w taki sposób by mógł on służyć także do powtórzenia, uporządkowania wiedzy czy uzupełnieniu braków dla osób które pracowały już z Angularem. Jeśli jesteś front-end developerem, ale jeszcze nie miałeś okazji zapoznać się z Angular, lub chcesz uzupełnić szczątkową wiedzę o fundamenty - to jest kurs dla Ciebie! Dodatkowo, jeśli zaczynasz przygodę z front-end ale masz już podstawy HTML i JavaScript, to kolejny ważny krok na Twojej drodze do kariery!
Angular 10+
W poprzednich lekcjach krok po kroku zdobywamy nowe sekcje do naszej strony aby
zbudować kompletną stronę portfolio aczkolwiek cały czas jest to dalej jedna
strona nie mamy tutaj praktycznie żadnej nawigacji.
Jeśli spojrzymy na kod źródłowy to tutaj mamy linki w których dodałem
kotwicę kotwicę też się tutaj od krzyżyka i do poszczególnych sekcji po to dawałem
tutaj ID czy IT Services i link Services i jak już zapewne wiesz dzięki temu te linki
pozwalają nam przeskoczyć do poszczególnych sekcji strony.
Można też wrócić i to wszystko co jest
istotne to wszystko dzieje się bez przygotowania strony.
To też po jednej stronie te linki służą tylko do przesunięcia się w inne miejsce.
Tutaj jeszcze dodam tylko jedną zmianę w CSS się.
Wróćmy do CSS a dodam sobie taki jeszcze fajny trik który pozwoli nam może do
głównego CSS gdzieś w tym miejscu podać dodatkowy styl który pozwoli nam się
płynnie przemieszczać po naszej stronie odświeża stronę jak widzisz teraz.
Jeśli tej sekcji to ładnie przewija stronę do odpowiedniej sekcji
aczkolwiek przy bardziej złożonych stronach chcielibyśmy nawigację.
Plan jest taki że się wpisze jakiś URL
i jeśli ładuje stronę to jak widzisz cały Englert jest restart.
Część z tych naszych linków tutaj usuwał także to co nam się po prostu przełamuje.
Zniszczony stworzony jeszcze raz jest to pewne marnotrawstwo.
Tak bo pierwsze
kamienie trochę czasu zajmuje dlatego co chcemy zrobić chcemy zrobić stronę typu
Single Application czyli taką stronę którą tak naprawdę nie będziemy przechowywać.
Będzie to strona która cały czas będzie
jednym dokumentem będzie raz HTML raz za to
i trik polega na tym że jeśli zmienimy url to ja będę chciał żeby zmienił się
komponent który jest w tym momencie wyświetlany.
Zobaczmy teraz jak to jest zbudowany jeśli pójdę sobie do App komponent HTML
to tutaj mamy cały czas na sztywno zawsze zamontowany komponent.
Teraz co ja zrobię zamiast tego Apache
komponentu w tym miejscu umieszcza się teraz nazywa się router.
Jest to gniazdo wyjściowe ratingu.
Chciałem po prostu zamiast te komponenty
mieć na sztywno i ręcznie jakoś się przełączać.
Router pozwoli mi tutaj w tym miejscu Z3
bądź któryś z tych komponentów zależny od URL.
Wciąż jest tu zupełnie pusto skonfigurować go ratingu musimy nauczyć
które adresy URL będą wskazywały na które sekcję czyli powiedzmy przejdę do
rating AB rating i mamy moduł ten moduł importuje my i nie możemy go od razu.
Mamy specjalną funkcję w Hood która przyjmuje listę.
No właśnie ma porwań URL ścieżek URL na komponent.
Czy jeśli jestem na głównej ścieżce to po domenie po porcie nie znajduje się nic.
Nie ma żadnych danych jest to główna
ścieżka to chciałbym załadować w tym miejscu komponent
i ten komponent który tuz przed chwilą czyli tutaj ładuje Home komponent.
I tak samo możemy dać kolejne ścieżki.
W ten sposób powiedzmy about to są komponenty które są już wygenerowane.
Tutaj znajdziesz je w katalogu PGS.
Możesz też wygenerować własne komponenty do ścieżki jeden.
Zobaczmy jak tam to zadziała.
Jestem na stronie głównej teraz Bogu nie ma nic specjalnego.
Jeśli teraz dopisze po prostu about.
Widzisz ktoś inny komponent odbył się
komponent about works czyli zamiast komponentu Hunt komponent
został jako pierwszy załadowany po zmianie URL a komponent zamienia się na komponent
który w tym miejscu nie ma za wiele informacji co fajnego możemy zrobić.
Zwróć uwagę że te trzy komponenty na
przykład będą miały u góry pasek nawigacji.
Możemy go postawić za każdym razem to ja mogę sobie taki na wzór
powiedzmy wyciągnąć do głównego komponentu lub z tego zrobić.
Może coś takiego jak flex Flex kolumn może w ten sposób tę główną część
osiągniemy czyli tutaj będzie też jakieś przykładowe style.
Tylko to dobrze wyglądało
że ktoś się rozciągał i powiedzmy z tego komponentu naszego.
Komponent Ukrainę stopę.
żeby nie trzeba się powtarzać w każdym komplecie trafiliśmy na główny
powtarzalny lek od strony czyli zawsze ta sama stopa zawsze ten sam nagłówek ale
środek tutaj będzie wymieniany za każdym razem.
I to jest jeszcze wszystko na chwilkę do about.
I powiedzmy że to pakuje też w jakiś kontener skoro jakieś tam przykładowe CSS.
żeby to się dobrze układało Zobaczmy teraz
ok to w ten sposób coś jeszcze nie tak z naszą stawką aby komponenty HTML
tu jest Flex Flex colą zróbmy żeby fakt trzymał jeszcze jakąś wysokość.
Małych po prostu stronach żeby nadal było to wysokie.
środek powinien się rozciągnąć i elegancko mamy zawsze nagłówek na
przystawkę mu się przełączać pomiędzy tymi różnymi stronami.
Co tu jeszcze ciekawego ja się Stworzyłem stronę 5 Not Found czyli powiedzmy jeśli
ja podam właśnie Kościuszko to jest nie rozpoznana wpisze coś co jest nie tak.
Jest to błąd i widzimy tutaj białą pustą przestrzeń.
W ten sposób nie pasował do żadnych adresów więc dobrą praktyką jest tutaj
jeszcze taką ścieżkę która zawiera dwie gwiazdki
i to jest ścieżka która łapie po prostu wszystko kartką.
Czyli jeśli żaden z wcześniejszych adresów nie pasuje i się żaden z tych
adresów nie posuwa do ścieżki no to ta ścieżka po prostu zawsze się aktywuje on
ostatnio się upomniał wcześniej to bedzie problem bo ta ścieżka będzie zawsze
wychwytywania i wszystko po tej ścieżce już do tego nie będzie dostępu.
Czyli mówiąc po stu Running sprawdza po
kolei dopasowuje nasz URL do tych ścieżek i pierwsza ścieżka która pasuje która się
zgadza ten komponent zostanie umieszczony w miejscu poprzedniego komponentu.
Zobaczmy jeszcze raz mam about a teraz przesuwa się na Australię w ten sposób.
MAM BAND jeśli teraz cokolwiek mamy Page Not Found Works.
Jeśli teraz wrócę do naszej nawigacji czy
naszego Bara i te nasze linki tutaj w barze
Zobaczmy teraz zamienia na normalne linki czy powiedzmy to sobie about to zrobi po
prostu stronę główną czyli normalne przekierowania robić to.
No właśnie to zadziała po prostu wtedy jak
zwykła strona internetowa czy klikając Home widzisz się przykładowo
about widzisz tutaj czyli wszystkie dane wprowadzone czyli np.
jeśli zobaczysz ja w Home wprowadza jakieś zmiany lepsze jakieś dane
i kliknąć przycisk to te wszystkie dane które wprowadzić tutaj sieć wysłana gdzieś
nie zapisałem stracimy ja też się niszczymy komponent ten traci dane jeśli
zniszczymy całą aplikację Guerra no to wszystkie wprowadzane zmiany są tam gdzie
niszczone lepszą marką cegła Mullera wystartować więc niby router działa ale
tak naprawdę on się ładuje tylko raz na starcie i każde kliknięcie zupełnie
przygotowuje nam stronę co możemy z tym zrobić
możemy ten cały roaming przestawić sobie tutaj w taki tryb
jak juz nasz trup i wtedy zamiast prawdziwych linków będzie
używało się treningów z hasłem i wtedy powiedzmy jeśli ja robię linka w ten
sposób tutaj to przekierować mnie do strony linka w ten sposób możemy
przekierować na tej samej stronie kasę Zobaczmy teraz jak to zadziała.
Czyli jeśli przychodzą do.
Usług.
No właśnie widzisz to ładnie mi działa mogę przyjmować ze stronami ale
boję się przoduje tu nawet tu bez podawać ale natychmiast się zmieniają.
Nie ma już ładowania to nie mogę teraz przejść do stron
jakby straciliśmy tutaj możliwość łatwego przekierowania do poszczególnych elementów
tutaj gdzieś na stronie i teraz jest jeszcze jedno fajne rozwiązanie
ja tu przejdę powiedzmy na jakąś inną stronę żeby się pokazać bez ratingu.
Co możemy zrobić.
Czy jest miejsce na stronie gdzie Budka tu gdzie wchodzę.
Dokumentacja przychodzę do stron to muszę cały czas gdzieś tam przełajowych czuję.
Ale powiedzmy jeśli ja zrobię to nie tutaj
linkami tylko spróbuję nawigacji puczu nowa skryptu.
Jesteś taka nazywa się History.
To jest obiektu Window History.
Ma takie funkcje jak push push State przyjmuje jakieś dane
możesz je przechować w jakieś informacje które można odzyskać przy nawigacji jakiś
tytuł test partii jakiś URL powiedzmy wpisze sobie test i co to znaczy pusta.
To nie znaczy Zmień adres zmień sobie pasek URL nie możemy spustu zmienić aż w
pasku adresu musimy gdzieś emigrować i teraz historię pustej jak sama nazwa
wskazuje udaje nawigację po prostu dodaje do historii.
Kolejny krok tak jak gdybyśmy faktycznie przeszli na inną stronę
bez faktycznego przeładowane bez faktycznego przełamywania tej strony
ładowania jej z jakiegoś serwera zobaczmy plik Enter pojawia się tekst.
Dopytuje się jeszcze raz dwa trzy te zmienne raz dwa trzy.
Mogę nawet zrobić sobie wielu stopniową nawigację w ten sposób test.
Raz Dwa Trzy.
No widzisz mogę sobie negować ale to ma się nie ładuje od nowa.
Jestem cały na tej samej stronie czyli mogę symulować SIM Application i
teraz co jest fajne że tutaj jeśli użytkownik nie wstecz
lub przód to może nawet może normalnie chodzić jak w historii
prawdziwej przeglądarki tak jak gdyby faktycznie pomiędzy stronami.
Dopóki nie Enter dopóki nie odświeża całej
strony no to jestem cały czas w ramach jednej strony.
Ale wygląda na to jak mu się poruszał pomiędzy elementami.
I teraz każda zmiana tego swiata
możemy wykryć czyli window pop z tekstem on powstaje.
Mogę przypisać sobie jakieś konsolowe podzespoły.
Czyli jest specjalny event który pozwala
nam wykrywać widzisz kiedy użytkownik nawigację pomiędzy
stronami i teraz możemy nasz router ustawić właśnie w taki tryb history czyli
chociaż nie mamy włączonego to shooter domyślnie właśnie działa w takim trybie
history czyli push State tylko wada jest taka że zwykłe linki nie pozwalają nam
zrobić niestety tak jak ustawienie to muszę być rzeczowa skryptu
mogą znajdować kliki wszędzie a my musimy stworzyć specjalną dyrektywę która
przechwytywanie tego klika i wykonuje za nas tym puste.
Na szczęście tutaj eksportuje swoje własne dyrektywy.
Dziś używam tego ratingu mam go w projekcie to ja mówię po prostu zamiast
tutaj dopisać sobie router link tego hasła mogę się pozbyć URL
i tam chcesz gdzie chce nawigację faktycznie w ramach jednej strony z
hasłami no to mogę robić to w ten sposób że tam gdzie chcę faktycznie przejść do
jakiejś innej strony to mogę to zrobić po prostu tutaj używając router link.
Zobaczymy jak to zadziała teraz.
Ciemne strony.
Strona główna about przejdę na inną stronę usługi przewinęło się tutaj.
Czyli to działa świetnie strona projekty.
Nie ma takiej strony nie ma mniej skomplikowany kontakt
nie tylko Wróć na główną stronę ale jeszcze przy winie dodał.
Czy wiesz może te dwie nawigacje połączyć
i teraz Chodząc pomiędzy tymi elementami tutaj.
Ja nie mówię strony 30 błyskawicznie dzięki temu że nie muszą być odległości do
serwera to przełączanie się pomiędzy ekranami w takim Singapurze Application
następuje niemalże natychmiast bo jedyne co musimy robić to ogółem musi zniszczyć
komponent i w jego miejsce załadować nowy inny komponent.
Pamiętaj jednak że dokumenty są niszczone.
Czy jeśli faktycznie powiedzmy w kontakcie
trzeba coś pisać to ten dokument będzie zniszczony.
Jeśli np.
do innego ekranu wracając z powrotem został zniszczony stworzony jeszcze raz.
Więc o tym też musisz pamiętać żeby dane przetrwały dłużej.
No to musisz te dane z tego komponentu gdzieś przekazać wysłać zapisać.
Poza tym komponent który właśnie będzie
niszczony podczas nawigacji to jeszcze przewinienia do góry się aż para zrobiła.
Prawdopodobnie Zostawiłem tutaj jeszcze gdzieś w Hamie podwójną nawigację teraz
jak mamy taką nawigację przechodzimy między różnymi powiedzmy ekranami np.
jeśli przejdź do strony której nie ma to tu URL cały czas jest projekt a tak
naprawdę ja bym tutaj chciał nie znać żadną stronę
więc mam jeszcze taką fajną możliwość że możemy pomiędzy tymi różnymi stronami
także przekierować czyli powiedzmy jeśli tutaj ktoś będzie na stronę główną
to ja chciałem przekierować red Direct tu strony Hall a ten komponent na przykład
umieścić osobno w ścieżce Home to możemy zrobić w ten sposób
przekierowanie tylko przekierowania to muszę powiedzieć
chcę czy ma dopasować początek jeśli początek pasuje to przekierować my mamy
zaczyna się od lat projekt i cokolwiek się dalej znajduje on ma to zignorować i
przekierować trzyma całą ścieżkę dopasować.
Czy musi być od początku do końca pasować ta sama ścieżka.
Jeśli ja zostawię tutaj prefekt
czyli AW ma 30 ustawioną opcję FX to nie zadziała zbyt dobrze
bo jak widzisz wszystkie URL de facto zaczynają się od pustego stringi więc
nigdy nie będziemy mogli przejść nigdzie indziej poza Home bo on zawsze będzie
wchodził w tą ścieżkę i zawsze jeśli zmieni to na full
no to wtedy musi być pusty URL i tylko i wyłącznie pusty URL jest pełne dopasowanie
tylko wtedy jeśli jest cokolwiek innego niż pusty URL
tutaj to możemy wprowadzić about i kolejne aż trafimy do dwóch gwiazdek.
I tak samo te dwie gwiazdki
żeby tam już nie został w tej błędnej stronie to możemy go stąd wyrzucić.
Czyli jeśli dwie gwiazdki to zamiast tego możemy przekierować go Direct.
Tu także Not Found np.
mogę tak nazwać ścieżkę i znowu pełne przekierowanie chociaż tutaj
właściwie nie ma to znaczenia bo tu będziemy łapać i tak wszystko więc
obojętnie co i tak musimy jakąś opcję podać.
Czyli teraz jeśli przedstawia Home działa
albo działa serwis jest przeskakuje i się przewija.
Project natomiast widzisz przerzuca mnie automatycznie do patcha 2.
Możemy też kochać.
Wrócę więc teraz do kodu.
Powiedzmy że ten nasz projekt też dopisze żeby to nie był Patent Fund.
Projekt.
Projects komponent OK.
I teraz jeśli wrócę z powrotem do naszego
bara to część tych linków jest teraz dokładnie router linkami
ale nasze linki które przewijają stronę są zwykłymi strefami.
Jeśli chcielibyśmy zrobić router linka to
tak naprawdę to muszą być router linki które prowadzą z powrotem do Home Home.
Natomiast ta część do której chcemy się minąć tutaj wkraczamy jako fragment
żeby powiedzieć że ma przekierować i wtedy do fragmentu fragmentu strony.
Tak samo zrobi tutaj
i teraz jeśli zrobimy to tylko w ten sposób to to nie niekoniecznie zadziała.
To czy te fragmenty się powinny pojawić
się pojawia ale już teraz się już nie przewija.
Jeśli chcemy żeby to działało trzeba to przewijanie to specjalnie włączyć.
To się nazywa kur skrót think I trzeba to włączyć na innej bo jeśli
chcemy żeby właśnie nie tylko przechodzić pomiędzy stronami ale żeby o właśnie to
przewijanie z powrotem działało i teraz i tutaj przechodzę pomiędzy.
Elementami w ten sposób no to też ładnie mi działa.
Możemy też się pomiędzy ekranami.
Możemy też w górę i w dół w ramach jednego ekranu.