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+
Kiedy wiesz już jak wykorzystać wiązania danych wiązania eventów wewnątrz jednego
komponentu no to możemy teraz przejść o krok dalej w tej lekcji i pokażę ci co
możemy zrobić z samymi komponenty jak możemy.
Samą koncepcję komponentu wykorzystać żeby szybciej łatwiej budować bardziej złożone
aplikacje bardziej złożone interfejsu użytkownika.
Tutaj mam na razie nasz jeden
komponent i on jest zamontowany tutaj absurd iż mam tylko jeden komponent bo to
komponent taki jakby za chwilę nam nie daje.
Siła komponentów tkwią w możliwości ich wielokrotnego wykorzystania czyli np.
takim jaką mogą utworzyć sobie kilka razy i jak wiesz każde wystąpienie w HTML u
tego tutaj taka walka spowoduje wyświetlenie osobnego komponentu tutaj.
I co jest ważne każdy z nich jest osobnym obiektem.
Każdy z nich posiada własne dane jeśli tu
wpisze bo tak pisze jak i tu pisze jeszcze coś innego np.
Alize to jak widzisz każdy z komponentów działa zupełnie niezależnie od siebie.
Każdy ma swoje własne dane każdy ma własne
zdarzenia i one zupełnie są odizolowane od siebie nie mają wspólnych elementów.
Co jest ciekawego. Te komponenty jak widzisz mogły
wielokrotnie usłyszeć aż kolekcjonerskie wyglądają działają tak samo.
Moc komponentów i ich możliwości tkwią w ich parametr rysowania mianowicie możemy
komunikować to komponenty możemy przekazać mu pewne dane
i możemy na słuch na zdarzeniach które występują w środku.
Ponieważ poprzednich lekcji jeśli utworzył
powiedzmy jakiś import z wieku element tekstowe import to pamiętasz że ja mogłem
jakieś dane przekazać do środka jako parametr np.
walił.
Jeśli w danych mamy powiedzmy taki sam
obiekt jak tu mieliśmy czyli tutaj jest też użytkownik nazwę go testowy
to mogę przekazać go tak jak pamiętasz znajduje się w jej środku w tym płocie.
Możemy przecież to w drugą stronę czyli na jakieś wydarzenie klapki Down
na każdy klawisz możemy wyciągnąć to zdarzenie które powstaje w środku i np.
sprawdzić jaka jest wartość tego buta po
tym zdarzeniu tak jak to zdarzenie wystąpić co tam jest wpisane.
No i z powrotem mogę odłożyć np.
to do naszego obiektu to daje.
Po co wyciągamy te dane ze środka z tego komputera.
Dzięki temu ja mogę teraz w dowolnym miejscu w całym tym HTML u np.
wyświetlić sobie tą wartość gdzieś indziej.
Nie muszę ręcznie zdawać każdego elementu ze sobą tylko dane.
Tutaj pojawia się wszędzie na stronie OK to już wiemy.
Pytanie teraz jak możemy to wykorzystać
przy komponenty tak samo jak każdy element HTML jak import Button itd.
Niech one przyjmują jakieś dane i emitują eventy tak samo nasz element może de facto
udawać element HTML też przyjmować dane i też emitować własne zdarzenia.
To jest nasz element więc możemy sami sobie wymyślić co to ma być.
Czyli tutaj ja mogę też zrobić walił np.
przykład ale mogę wymyślić coś zupełnie własne pole.
Na przykład mogę napisać że data czyli dane i mogę przekazać dowolne dane.
To może być String ale może być np.
cały obiekt user czyli użytkownika naszego i user ten obiekt chciałbym włożyć do
środka przekazu jako parametr ten nie uda się wyświetlał mi w środku tym
komponent walka gaz jak to działa tutaj na mnie krzyczy Ken big data.
I ten błąd jakby zapamiętane bo ten błąd
bo dzieci mówił że po prostu komponent nie przyjmuje.
Nie akceptuję takiego parametru jak data
musimy w komponenty zadeklarować taki parametr też mamy na to dwa sposoby.
Mogę tutaj dopisać sobie impuls
i impuls do którym w ten sposób że zmienna do której chcemy dane przypisać.
Czyli chcemy tutaj przypisać żeby jak
wiesz w HTML się to w składni wyświetlał komponent komponent HTML.
I teraz te dane chce odebrać z parametrów data jak tylko wpisze to już błąd znika.
Czyli dowolny obiekt przekazany tutaj tak naprawdę będzie przekazany w to miejsce.
Czyli zamiast Herthą powinniśmy mieć teraz test zobaczymy.
I super jest nasz komponent.
Tu jest test.
Tu jest test.
Co ciekawe jak coś zmieniamy
to zobacz że te wartości są przekazywane w głąb tego komponentu na dole.
Jeśli tutaj coś zmienimy to zobacz jest to ten sam obiekt
aczkolwiek uważaj bo jak widzisz zmiana tutaj nie z powodu ważnego zdarzenia.
Mieliśmy dane ale komputer nie wiedział
więc animację uruchomiła się dopiero kiedy faktycznie
został przechwycony przez ten komponent czyli być może dane przekazywać do
komponentu tylko musisz uważać po prostu czy ten komponent na pewno będzie o tym
wiedział że dane się zmieniły i jest to jeden sposób
drugim sposobem zamiast tutaj deklarować ten parametr to możemy użyć tego
specjalnego kuratora import bezpośrednio przy zmiennej którą chcemy
napisać parametrem tutaj import który trzeba importować w ogóle Smolar.
I co możemy fajnego zrobić mogę tutaj jako parametr podać nazwę
w ten sposób czy wiemy że do tej zmiennej podatnik gniazdo impuls o
nazwie data wskaże który według komponentu może przekazać jakieś dane czyli np.
możemy zrobić drugi komponent mogę stworzyć sobie drugiego użytkownika
nazwę go powiedzmy anonim nie będzie miał imienia i anonim
przekaże do drugiego komponentu komponent pierwszy będzie miał dane
user komponent drugi będzie miał dane Anonim To jest test.
Tutaj jest pusto.
To się zgadza super.
Dobrą praktyką jest nie mieszanie tutaj tego czyjeś faktycznie przekazuje obiekt.
User no to dobrze nazwać jest to faktycznie user i fajna rzecz bo nie musi.
User juz dwa razy tylko możesz to pominąć.
Ja po prostu użyję nazwy zmiennej jako parametru.
Jak widzisz możesz różnego rodzaju obiekty
różne dane w pionie pod ten sam parametr i każdy z komponentów będzie miał swoją
własną inną wartość niezależną i tę wartość też się zmieniały zależnie.
Czyli ten anonim będzie się zmieniał razem
z tym obiektem a ten user będzie się zmieniał razem z tym obiektem.
I w naszym punkcie będzie od razu też widoczny ja czyli też rodzic nasz zespół
dzieli te obiekty wtedy z dziećmi możemy rodziców zmieniać.
Możemy zmieniać to w dziecku
możemy też komunikację przeprowadzić w drugą stronę jak jakiś event pamiętasz to
skażenie więc musimy wyciągnąć ten event to zdarzenie
wyciągnąć jego szczegóły i zmodyfikować dane.
Tutaj oponenci się zmienia tak samo jak my gdyby coś się stało
wewnątrz tego komponentu walka zobaczmy powiedzmy ktoś
na końcu zdecydował zasób trybu użytkownika
to chcielibyśmy gdy ktoś klikanie za subskrypcję użytkownika.
O tych nowych danych te nowe dane
użytkownika zmienione przekazał z powrotem do góry do komponentu rodzica czy np.
zapisać na serwerze i dane takiego użytkownika który się ze Słupska próbował.
To teraz ja się tutaj chciałbym dodać zdarzenie jakieś event to też tak samo
okrągłe nawias używa i wymyśla sobie jakąś własną nazwę zdarzenie czyli np.
user sam skrypt.
I tu mogę wykonać jakąś funkcję.
Ja po prostu tutaj cylinder user i konsola.
I zobaczymy co się stanie.
Chciałbym tutaj dostać dane użytkownika
lecz nie jest to żaden event tylko jest to obiekt który zbierał dane użytkownika.
Teraz mogę tę funkcję sobie wykonać gdy to zdarzenie się zdarzy tak samo jak to
robiliśmy tutaj i teraz te dane od rodzica który jesteśmy w środku w tym momencie.
No to tak samo będą znajdowały się
dolar event tym razem nie będzie to event przeglądarki
takie jak klik czy kebab tylko będzie to obiekt który sami sobie definiujemy i np.
może być to obiekt.
Juz teraz mamy taki event wysłać ze środka
z tej funkcji w komplecie komponent do rodzica.
Tutaj do tej funkcji sub Script FAB komponent.
żeby to zadziałało musimy zdefiniować tutaj coś takiego co nazywa się Emitel.
Ja nazwę go tak samo Script.
I będzie to nowy event Emitel.
Uwaga importować go z angola record czyli jak go wydamy.
Musimy się upewnić czy u góry jest
importowany z angola KOR Core super jest tu obiekt który ma dwie ważne metody.
Script pamiętaj o.
Lis ma dwie ważne funkcje metody mit który pozwala wyemitować starzenie
i SEB Script które pozwala nam obserwować zdarzenia.
Tutaj mogę funkcję sobie podpiąć się w to teraz my tutaj nie chcemy
skarbowa ć tego nie chcemy być w komplecie.
Ten komponent rodzic lub komponent
tym nawet sami okrągłymi de facto wspina się w subskrypcję i gdy ja emituje to.
Tak naprawdę wykona się ta funkcja.
Więc tutaj EBIT
powiedzmy naszego użytkownika stąd przekażę do góry do rodzica.
Zróbmy może w ten sposób że ja tu jeszcze
Anonima tłum jeszcze Józefa i nasza funkcja subskrypcja konsol rok.
Oprócz tego pod mini użytkowników czyli
Designer to będzie nowy Józek czyli naszego anonimowego.
Bierzemy stąd z dziecka.
Przekazuje zobacz pusty obiekt przekazuje
do środka do komponentu przy życiu płyta i przy użyciu autopilota.
W ten sposób też czas importować u góry.
Odsyłam spowrotem czyli tu dane przychodzą zamiast Chan są anonimowy.
Tutaj.
Wewnątrz komponentu możemy go edytować robić animacje.
Te wszystkie kroki o których pamiętasz
poprzednich lekcji i byliśmy gotowi to możemy tym autobusem.
Gotowy już taki zmodyfikowany obiekt gotowy do zapisania oddać rodzicowi
i teraz tak mogliśmy zrobić w nim komponentów.
Tutaj jest właśnie możliwość używalności.
Czy ja mogę zabrać coś obiektu edytować go
w tym pojęcie wyciągnąć go z tego obiektu i wisieć przed innym kompanem
poszedł pobrać obiekt z listy edytować i wyświetlić np.
na wykresie OK.
Zobaczymy jak to zadziała.
Tworzę przeglądarkę.
I mamy teraz tak tu jest anonimowy tu jest test.
Jeśli tutaj coś pisze powiedzmy znowu nasz Bob.
Czy chciałbyś tak.
E-mailem test małpa układ test.
Tak się stanie gdy się za cud spróbujemy.
Te dane naszego Boba trafiły tutaj.
Do drugiego komponentu
czyli możemy sterować dokładnie komunikacją komponentów możemy wiedzieć
kiedy przekazuje też obiekt do środka do tego komponentu w środku.
Ten komponent obsługuje zmienia ten obiekt gdy skończył swoją pracę.
Może przekazać wynik do jakiejś funkcji którą wszedłby na
serwer albo przekaże do kolejnego komponentu i tak dalej i tak dalej.
Czyli jak widzisz taki cały skomplikowany proces tak jak to mieliśmy że ileś kroków
wykonywaliśmy po kolei w tym naszym komponenty.
Krok pierwszy krok drugi trzeci czwarty itd.
To wszystko de facto możemy podzielić na mniejsze kroki na mniejsze komponenty
które musimy później wielokrotnie używać w różnych miejscach z różnymi parametrami z
różnymi użytkownikami czyli taka komunikacja
do środka do komponentu i na zewnątrz z komponentu pozwala na bardzo fajną rzecz
pozwala właśnie wielokrotnie te same elementy wykorzystywać i budować takie
bloki czy kroki z których budujemy jak z klocków Lego interfejs i dane.
Wtedy tylko spędzamy z takimi elementami OK.
Mam nadzieję że jest to jasne bo będziemy
właśnie w ten sposób w kolejnych lekcjach budować dużo bardziej zaawansowane
przykłady właśnie dzieląc skomplikowane duże elementy na mniejsze komponenty które
będą się mogły w ten sposób właśnie komunikować.