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+
Nasza strona portfolio jak dotąd jest taka dość statyczne.
Są tu jakieś ruchome elementy aczkolwiek chcielibyśmy tutaj dodać troszeczkę więcej
życia troszkę więcej modyfikacji do możliwie nawet jakiejś animacji.
Tutaj pozwalam sobie stworzyć kilka takich
przykładowych transformacji Slide UP Left Ride i dodamy gdzieś do
kilku elementów takie specjalne klasy Slide Left Ride.
Jeśli do tej klasy dołączy jeszcze klasę
animator no to taki element powinien na przykład tutaj wjechać z jednej strony
lub na przykład tutaj dodam klasę inną to się pojawi.
Z drugiej strony jak użytkownik wejść na
stronę typu kilometrową musi rozwinąć takie kafelki wjechać nam w poszczególnych
miejscach i to jest taki mały problem że przy odpowiednim miejscu i momencie
tą klasę dodać że animacje się wykonała po prostu mniejsze klasy.
No tutaj nic się nie dzieje odświeża stronę ta sama jest martwa.
Musimy znaleźć jakiś sposób żeby do tych
wszystkich elementów oprócz naszej klasy CSS żebyśmy także mogli dodać
no właśnie jakąś informację jakiś ten moment kiedy klasa się dodaje.
Mam kilka możliwości moglibyśmy po prostu na przykład w komplecie Home komponentu
jakieś Time Out Interview tej klasy dodawać.
Aczkolwiek no to znowu w tym naszym komponentu robi się coraz większy bałagan.
Home już zawiera różne różne dane różne rzeczy.
Pytanie Czy ja mógłbym to logikę przypiąć bezpośrednio tutaj do tych elementów.
Ta za każdym razem kiedy jakieś zachowanie
wygląd logikę chcesz po prostu móc dodawać przykleja może powiedzieć do
poszczególnych elementów no to w takim przypadku potrzebujemy dyrektywy.
Otworzy więc nowy Terminal Server oraz uruchomione w drugim
dodatkowym terminalu wygeneruje dyrektywę
czyli powiedzmy było Slide In dyrektywa ANSI engine rate w skrócie g
d jak dyrektywa i powiedzmy stworzy specjalny katalog
na dyrektywy i utworzy dyrektywę powiedzmy Slide i żeby pozwalała nam wjeżdżać
elementom na stronę albo skonfigurować powiedzieć czy z lewej czy
prawej czy z dołu powiedzieć kiedy ten element ma nam się pojawić kiedy mamy
wjechać na stronę czyli zobaczymy slide in direct.
Otworzy sobie spokój taką dyrektywę i jak widzisz jest to bardzo podobne do
komponentu mamy też klasę mamy też u góry tutaj jakieś Dekoral tor tylko zamiast
komponent mamy Direct mamy lektora i co istotne nie mamy ani
Temple ani jest CSS czyli mamy tylko możliwość przy 5 dyrektywy do już
istniejących elementów ona nie wygeneruje szablonu ona nie posiada swojego HTML a
dyrektywa to jest coś co możemy przypiąć podłączyć do już istniejącego HTML
tez jak taką dyrektywę uruchomić jak wszystkie powiedzmy konsolowe.
Carlos Slim Interactive zrobią podpiąć tak samo komponenty.
Po prostu musimy gdzieś dopasować nas
elektor czy w tym przypadku zobaczymy dokumentację kwadratowe na wjazd oznaczają
sektor atrybutów czyli musi gdzieś w HTML u nas w aplikacji znaleźć się taki atrybut
żeby ta dyrektywa utworzona czyli powiedzmy animacja robić w tym miejscu
dodam dodatkowy atrybut AP Slide In zobaczmy w przeglądarce konsolę
i po ładowaniu strony mamy Hello Slide Interactive.
Teraz jeśli będziesz mieć dodatkowo taki
jeszcze element czy powiedzmy Apps Live in.
Powiedz mi jeszcze o umieszczeniu w innym
miejscu umieszczonego na przykład tutaj na tym elemencie p.
Zobaczysz dlaczego.
Odświeża stronę mamy 1.
Hello slide in direct LIVE.
Ale się Anglii.
Utworzyć dodatkowy akapit to ten akapit razem ze sobą.
Tam utworzy dyrektywę Halo SLA Interactive i tak samo nie tylko możemy przechwycić
tworzenie dyrektyw a te same komponenty możemy stworzyć Andrzej.
Nid.
I możemy stworzyć będzie on wystroju
czyli nie tylko mogę się przywitać ale możemy się także pożegnać
czyli Chile ja będę mógł stworzyć zniszczy się rozwinąć
i zwinąć to z każdym stworzeniem elementu w którym jesteś lektor z pasją są
dyrektywą utworzy dyrektywę jeśli zamknie bloku wspólnego ang.
Life będzie formą gwiazdką tabletem.
No to mamy BB.
Dyrektywa jest przecież elegancko tworzona i niszczona wraz z komponentu ami które
zabierają gdzieś odpowiedni atrybut odpowiedni lektor CSS.
I teraz pojawia się pytanie jak możemy
faktycznie tę dyrektywę która się pojawia i jest niszczona.
Elementem jaki możemy wykorzystać właśnie żeby ona kontrolowała te elementy a ona
mogła zmodyfikować element do któregoś z przyjęta to najgorszy sposób żeby coś
dostęp do tego elementu to jest coś takiego jak powiedzmy element.
I będzie to element ref.
Czyli tak jak poprzednio łapie referencje do elementu a teraz nie
muszę go wyszukiwać gdzieś w szablon HTML bo jesteśmy od razu w miejscu którym
potrzeba oponentów konstruktorzy konstruując dyrektywę od razu po pierwsze
referencje do elementu na którym ta dyrektywa zamontowana.
Nie trzeba tego elementu szukać.
No i mogą teraz powiedzieć powiedzmy indeks LM Native element który nie
podpowie za bardzo mam go typować HTML element.
W ten sposób ok i powiedzmy
klasy czyli klas list powiedzmy dodać klasę naszą klasę animator
i zrobić to może nie od razu byś poprzez set Time Out żeby to się pojawiło.
Powiedzmy sekundę po ładowaniu strony i zobaczymy teraz jak to nam zadziała.
Odświeżania strony
jak widzisz dyrektywa będzie pod pięcie czeka sekundę i dodaj klasę która animacja
i element po otworzeniu strony ładnie nam wjeżdża co mi się nie do końca podoba.
No to to bezpośrednie manipulowanie dą.
Ja bezpośrednio wprowadzą zmiany nie czekając na
te zmiany stają się bezpośrednio wprowadzane natychmiast one nie czekają na
cykl wykrywania zmian i są też synchronizacji.
Zresztą zmian i takie ręczne manipulowanie tutaj i nie ręczne automatyczne wykrywanie
zmian tutaj muszę powiedzieć dziwnych efektów że coś zmienimy.
Z jednej strony my okulary i nie wiadomo jaki będzie efekt.
Dlatego chciałbym tutaj faktycznie wykorzystać nie ręczne manipulowanie tylko
cały czas dalej trzymać się wykrywania zmian i pozwolić aktorowi robić swoje
czyli właśnie wędrować HTML więc robią to w ten sposób.
Tutaj ja tylko zmienię zmienną czyli
animator postawi na tron i chciałbym żeby ta zmienna jesienna się zmieni żeby przy
zmianie tej zmiennej a łukasz sam dodał lub późną klasę lub jakieś style itd.
Tak jak to robimy ja utworze tą zmienną
animację tutaj w tym miejscu ona na początku może być ustawiona na FOZZ.
I teraz jeśli tą zmienną wystawić do góry
czyli pójdziemy już musiał to wcześniej robić dynamicznie to musiał oznaczać.
Nazwę klasy animator
i tutaj przypisać naszą zmienną powiedzmy Animator jeśli miałoby to taka dodała.
Ta sprawa jest taki że chce cały mechanizm
całe kombinowanie i go w HTML w tym miejscu za każdym razem kopiuj wklej.
Chciałbym to schować do środka do wnętrza tego obiektu.
A może to tutaj.
Czy mogę definiować życie jako host i mogę powiedzieć że klasy animator.
W ten sposób ma wskazywać na zmienną animator jest to jeden sposób.
Zobaczmy.
Odświeżoną stronę.
I po sekundzie nam to wjeżdża tylko u góry w dokumentacji w tym
naszych meta danych dyrektywę musiał szukać sprawdzać które jest które
tego chcemy zdefiniować to w tym miejscu jest też opcja.
Ja mogę bezpośrednio oznaczyć że ta
zmienna ma wskazywać na budowanie wiązanie do Horsta.
I tu już mogę pominąć kwadratowy nawias bo to już jest budowanie.
Po prostu piszę do czego chce zbudować to
nie musi być klasa ja mu w ten sposób zbudować np.
Style do jakichś wartości boimy się przejść np.
IT Hidden i każdy inny dowolny atrybut wszystko co mogliśmy.
W nawiasach kwadratowych przekazać.
Ja mówię teraz od środka jakby magiczne z wnętrza ustawić różne
własności tych elementów ja tu zostanę przy animator
i Zobaczymy teraz jak to zadziała żeby nie było działa tak.
Czyli mogę odświeżyć.
Klasa się Doda i tym razem robimy to zgodnie z Dobrymi Praktykami jaguara.
My zmieniamy tutaj zmienną a solar po wykrywaniu zmian
sprawdza te wszystkie wiązania i wprowadza zmiany za nas automatycznie.
Czyli teraz ta dyrektywa za każdym razem robi właściwie to samo.
Tak bo na zawsze ładne animacje pytanie
czy możemy jej przekazać jakieś opcje jakąś konfigurację.
Chciałbym żeby ten tysiąc tutaj żeby on był tylko polem w naszej klasie
które nazwę sobie może w ten sposób i tak samo jak
komponenty mogą od rodzica od nadrzędnego komponentu dostać jakieś informacje.
Tak samo dyrektywa tak samo poprzez import.
Dokładnie w ten sam sposób możemy się ustawić dalej.
Czyli mogę np. sobie tutaj wstawić Gila i podpowiada mi
i powiedzmy na troszeczkę dłuższy na dwie sekundy
dwie sekundy zrobię w tym miejscu a z tej strony powiedzmy w tej drugiej kolumnie.
Musisz pamiętać o dyrektywie.
Sam widzisz nie działa może lecz dyrektywę i ustaw powiedzmy 3 sekundy.
I teraz to jeszcze nie zadziała dlatego że musimy pamiętać ciągle o tym 1 Left nas.
Robimy dyrektywę to warto żeby była już miała w sobie wszystkie potrzebne rzeczy
żeby użytkownik nie musiał jeszcze gdzieś jakieś dodatkowe rzeczy dodawać więc za tą
dyrektywę Slim Left jeszcze także tutaj czyli powiedzmy ustawę sobie tutaj coś
takiego jeszcze Direction narazi go na celu.
I tu zrobie host Building i będzie to znowu klasa.
Czy można to kilka razy zrobić i pluton klasy A jak Pamiętasz te czasy ustawiać
także w ten sposób więc próbują może czy działa to tak czy mogę dynamicznie klasę
ustawić po prostu w ten sposób nie tylko jako
i tak czy nie ale także zmienić rodzaj klasy zmienić którą kierunek np.
będziemy chcieli żeby to nam się przesuwał.
Sprawdźmy odświeżyć stronę i jak widzisz oba elementy nie mówią
obawiały z jednej strony ale coś jest nie tak obawiało w tym samym
czasie albo po sekundzie dlaczego jak widzisz ja mam od 40 lat.
Konstruktorzy konstruktorzy.
On ma dopiero oryginalną wartość bo nasz dyrektywa nasz komponent dopiero utworzył.
On jeszcze nie miał czasu
podpiąć się zainteresować się i pobrać tych danych od rodzica.
Jeśli chcesz korzystać właśnie z impulsów
to musisz ten kod nie wykonać go w końcu ktoś to za wcześnie.
Tych danych tam jeszcze nie ma.
Musimy poczekać na inicjatywę.
Musimy poczekać aż komponent dyrektywa utworzona ale jak już tam na pewno
przyjęta we właściwe miejsce i posiada dostęp do tych wszystkich danych.
Spróbujmy zobaczyć to jeszcze raz.
Jak widzisz teraz ja to lepiej
bierze pierwszy element po sekundzie wjeżdża drugi.
Czy mamy kontrolę nad tym czasem opóźnieniem kiedy ma to wjeżdżać.
A teraz zwróć uwagę że nasza tutaj
nasz kierunek możemy teraz ustawić czy Left lub Right czyli np.
równie dobrze mógł tutaj kupisz
hospicyjnej zrobić tak także import i dodaje Są jakieś pole tylko jakoś
stworzy kolejne pole no to wtedy znowu to samo co dodawanie dyrektywy tak.
Przecież to dwa razy więc mógłbym jasne stworzyć tutaj impuls nadwyżkę direction.
Może w ten sposób i dodatkowo dodać Direction podać nazwę
klasy ale co jest fajne to to że ja mogę jako import wykorzystać
także sam atrybut całą nazwę naszej dyrektywy i wtedy nie muszę mieć
dodatkowych atrybutów tylko sam ABS Litwin staje się już de facto atrybutem.
Co ja tu przekażę wiedziałem to jako
dyrektor i będzie automatycznie jako klasa.
Czyli robimy Slide In Slayer Left może samo left by wystarczyło.
Więc ja spróbuję tutaj może jeszcze troszeczkę zmodyfikować CSS.
Zobaczymy.
Staples sam kierunek wystarczy że podamy np.
nawet z małej litery podamy sam kierunek
jako parametr tu to będą w ten sposób.
I to będzie i kropka.
AP też z małej.
Czy jak widzisz dodajmy zawsze klasę slide.
Dodajmy klasę tu jest parametrem z kierunkiem który chcemy uzyskać.
Jeśli dobrze pomyślimy o tym jak poukładać
właśnie tę klasę CSS i dyrektywy to może być bardzo fajny
mechanizm komponowania różnych różnego rodzaju animacji i różnych kierunków
różnych sposobów pokazywania tych elementów.
Połączymy to z dyrektywą czyli teraz mogę po prostu Apps Latin
będzie zawsze dodawał tę klasę ale nasz host Ding będzie tylko dodawać np.
kierunek Left tutaj będę mógł przekazać tylko raz zwrócił uwagę że nie dodaję
nawiasach kwadratowych dlatego że nie jest to zmienna.
To jest tekst.
Moglibyśmy oczywiście tutaj użyć zmiennej w nawiasach kwadratowych.
Przekazujemy zawsze ten sam tekst.
No to może mieć kwadratowe
i teraz zobaczmy Jeszcze tutaj będzie to w takim razie domyślnie left.
Ale w takim razie oprócz tego ja muszę jeszcze ustawić tutaj jedną klasę.
Czyli Slide wyjaśnił tak zawsze będzie.
Oprócz tego muszę niestety ustawić tutaj
zmienną czyli powiedzmy to test jak to zadziała.
Na starcie dodajemy klasę slide
na podstawie parametru Impact ustalamy kierunek który się zamiana
jest na klasę i po opóźnieniu dalej przekazem tutaj otrzymamy animację.
Ten cały skomplikowany mechanizm dodawania
usuwania klas animowana ich możemy schować elegancko w jednym parametr.
Jeden parametr to zachowanie strony.
I tutaj oczywiście musi być błąd.
Dlatego już na starcie chcemy żeby ta
klasa zawsze była natomiast ta druga żeby się pojawiała.
Po opóźnieniu dobra Sprawdźmy jak to działa.
Pierwsza powinna wejść po dwóch sekundach i druga.
Z drugiej strony wjeżdża po trzech sekundach już mamy bardzo fajny mechanizm
gdzie całe to wszystkie skomplikowane są schowane w środku.
W tych wszystkich funkcjach i parametrach
dla programisty dla nas później wystarczy że podamy jeden lub dwa parametry.
To jest oczywiście domyślne.
Podamy jeden lub dwa parametry
i cały ten mechanizm animowana dodawania usuwania klas parametrów.
To wszystko dzieje się za nas
automatycznie więc jest to bardzo fajna rzecz jeśli chodzi właśnie o wielokrotne
wprowadzenie tych samych zmian gdzieś w HTML u gdzieś na stronie.
Co tu jeszcze warto byłoby pamiętać.
Jeśli ustalamy jakiś temat internauty tego typu rzeczy to każda akcja może np.
trwać dłużej niż życie tej dyrektywy więc zapraszamy rozpoczynamy jakiś proces.
No to warto jest na przykład tutaj.
To będzie Chandler.
Warto zapamiętać uchwyt.
Czy to jest kwestia serwera czy tez Time Out.
Czy to jest jakikolwiek proces i
jeśli rozpoczynamy coś to warto po sobie posprzątać.
Czyli w razie gdyby komponent została zniszczona to klient Time Out Killer
Interview jest Chandler po prostu wyczyścić anulować.
żeby nie było w takiej sytuacji że dyrektywa już została usunięta ze strony a
my jeszcze wykonujemy niepotrzebnie w środku jakieś tam tematy Interview ale
jest to zła praktyka i może też prowadzić do np.
wycieków pamięci lub różnych dziwnych błędów kiedy wykonuje się
po tym jak komponent dyrektywa już dawno zostało usunięte ze strony ok.