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+
Wiesz już jak możesz modyfikować dowolne własności atrybuty HTML a więc kolekcji
zobaczymy jak możemy dodać tutaj różne zachowania możemy obsłużyć akcję o której
zdarzenia użytkownika czyli przejdę do przeglądarki.
Gdybyśmy chcieli powiedzmy tutaj na
kliknięcie w ten element sobie znajdę ten akapit.
Gdybym chciał to kapitał
obsłużyć to zdarzenia obsługę kliknięcia to może być atrybut Anglik.
I tu są dziś funkcje mają konsolę Long Click.
W ten sposób
jeśli przekażę to jakąś funkcję jakiś kod to kliknięcie teraz ten przycisk
wykona nam tę funkcję i każde kliknięcie wyświetli plik.
Tak to działa. Działa skrycie
czy musiał znowu znaleźć element zmienić jego własność stworzyć funkcją przypisać.
Zobaczmy jak to wygląda.
Jeśli chcemy dodać na przykład do Buttona błoto część na nim.
Jeśli chciałbym obsłużyć zdarzenie klik
to robię to nie poprzez on tylko poprzez otwarty nawias.
I tu wpisuje się już samo zdarzenie.
Czy widzisz tutaj Blur Cancer klik.
I tutaj po prawej stronie pisze już tylko ciało funkcji duszy całej funkcji pisać
tylko od razu kot który chce wykonać czyli np.
powiedzmy sobie nagle nazwa funkcji jest dowolna.
Może tak zrobimy ustawę że Józef name imię
zmienione i teraz tutaj mogę wykonać tę
funkcję lub inną czyli funkcję ja piszę po tej stronie
a tu już mogę ją tylko uruchomić pamiętaj o nawiasach żeby ją faktycznie wykonać czy
nie zostawić samej funkcji tylko żeby ją uruchomić.
Więc na razie.
A skąd się pojawiło a swobodnej zachęcam.
Jak i teraz się kliknąć.
Zwróć uwagę że ten zmienił się w każdym miejscu w którym jest.
Czy jeśli zmienimy dane tutaj
to autor upewnij się że wszystkie miejsca w których występuje ten first name
przestają zmienione czy zmienią się tutaj zmieniło się to Venus płyta czy zmienimy
tekst zmienimy własność i jeszcze wszystkie inne miejsca.
Jest to bardzo wygodna rzecz nie musimy teraz w piętnastu różnych miejscach szukać
tych elementów tak jak modyfikować tylko jeśli elementy obserwują
są spięte w jakieś dane w naszym kodzie to zmiana samych danych powoduje że Aguilera
aktywnie aktualizuje wszystkie elementy HTML które wskazują na te dane.
Ta nasza funkcja jednak zawsze zmienia tę samą wartość.
I nie przyjmuje żadnych argumentów więc tu jest troszkę łatwiej rozbudować.
Powiedzmy że chcielibyśmy wziąść aktualną
wartość tego buta i by korzystać z tej funkcji tez mógłbym do tego dodać.
Jasne jest tylko wtedy musiałbym później wyszukać po tym ile jest to o tyle
niewygodne tyle niebezpieczne że nigdy nie wiem czy gdzieś na stronie inne komponenty
ktoś też przypadkiem tak samo nie nazwał elementu ma dwa testy.
Na stronie znajdują się dwa elementy import działa mają id est.
Przy bliższym pokazuje uwaga znalazłem dwa elementy z nie unikalnym ID.
Jeśli próbujesz go pobrać to zostaje tutaj tablicę i straszny bałagan się robi.
Potem Chandler pozwala na fajną rzecz.
Jeśli chcemy w HTML u odwołać się z jednego elementu do drugiego np.
w pliku to zamiast idei ja mogę użyć takiego znaczka jak chcesz.
I to definiuje taką lokalną referencje
czyli zmienną która istnieje tylko w tym szablonu.
I ona nie wycieka.
Jeśli ktoś w innym komponentu nie nazwie
tak samo element to nie będzie tutaj kolizji.
Ja tak sądzę.
I tutaj wprowadza jakąś nazwę.
Czyli chociaż zaraz ide mówić to test to jest lokalna IDE.
Może też bardziej sensownie.
Będzie to first name referencje na
przykład nazwę to jest dowolna jest to nazwa lokalnej zmiennej i za fajną
rzecz mogę przekazać sobie jako parametr do tej
funkcji i tutaj otrzymamy to jako parametr i konsol lock.
I zobaczymy w konsoli co się stanie czy
nie teraz wywołana tą funkcję czy jeszcze raz oznaczał ten import referencyjny.
I w momencie kliknięcia
wykonuje ten kod czyli przekazuje do funkcji Change name ten element.
Zobaczymy co się stanie.
Mamy przycisk mam import to wpisuje coś tam.
Klika.
I zobacz cały ten import.
Jestem tutaj przekazany jako argument do funkcji.
Jeśli mamy taki impuls to co możemy z nim zrobić.
Mam import do zmiennej pisałem mogę sobie zobaczyć na nim jego.
Czyli to będzie test.
To jest test czy mogę w każdej chwili
zebrać odczytać wartość ta jeśli mam do niego referencje to jest jeden sposób.
Super czyli tutaj zamiast obstawiać to samo zawsze użyję sobie tutaj to.
Jeśli chcesz by odpowiadał na te elementy tutaj w tym miejscu to możemy dość typ.
Jest to HTML import elementu czoła skrypt mógł podpowiedzieć że będzie to h t ml.
Import w ten sposób ustalimy typ to tu i teraz podpowie że kropka.
2.
Możemy sobie to sprawdzić konsolowa mogę wyrzucić.
Sprawdźmy teraz ten czyli z buta wyciągamy Walią i Walią.
Jeśli zmienimy tego już zera.
Tom Muller to walił jak już pamiętasz wszędzie w całym.
Chodzi nam aktualizuje Hansen bo częściej i wszędzie się nam zmienił.
Sam zaktualizować te wszystkie miejsca
żeby odświeżyć ten HTML zawsze zgadzał się z tymi danymi.
Zmieniamy dane.
Anwar pilnuje żeby HTML się za sobą że był aktywny i działa to bardzo fajnie.
Z tym że musisz pamiętać o jednej rzeczy musisz wiedzieć w którym momencie a Muller
faktycznie aktualizuje HTML a żeby nie szukać niespójności wtedy brzmi to
strasznie ale jest to bardzo prosta zasada.
Powiedzmy że użyję tego sama żeby wyświetlić długość wpisanego tekstu
czyli powiedzmy że użytkownik który akapit zrobię.
Użytkownik może wpisać
170 znaków powiedzmy na Twitterze i zobaczymy ile zostało czyli odjąć first
name wywalił kropka linków na 175 czy chce wyświetlać
z każdą z nich zmieniał literki chcą pokazywać ile zostało znaków.
I teraz teoretycznie to powinno działać bo tutaj zobacz First Time Review.
To jest farsa.
My zmieniamy walutę i tuż płynem pojawi się długość a jak
zobaczysz Englert tego nam nie będzie aktualizowany
czyli wpisuje sobie polityce raz 2 3 4 5 6 5 nic się nie dzieje piknik jest
na miejscu a jak widzisz nie obserwuję wszystkich impulsów na stronie sam z
siebie i nie reaguje się przy każdej zmianie.
A Bolek aktualizuje HTML tylko jeśli wykryje jakieś zdarzenie czyli wychwycić
zdarzenie które które obserwuje jeśli jest to zdarzenie którego queer nie obserwuje.
Nie powoduje to generowania ekranu jeśli zdarzenie pamiętasz zdarzenie Click
to zdarzenie Click spowoduje aktualizacja ekranu
zmianę wartości i przeliczenie nowej wartości tego wyrażenia czy też
używanie tego RF a co tyle niebezpiecznie niewygodne że możesz zgubić aktualizację.
Jak możemy naprawić.
Jak upewnić się że z każdą literą będziemy mieć na pewno aktualną wartość.
Mógłbym do tego im płytę dodać zdarzenie bezpośrednio czyli tutaj to zdarzenie np.
część.
I z każdą liderką od razu modyfikować np.
nasze.
Przypisać tutaj przecież tymczasową zmienną.
I tu to zapisać.
Czyli temp najmniej
równa się i ciekawa rzecz bo jak mamy Change najważniejsze funkcje pisać.
Ja mogę też dostać się do zdarzenia które tu wystąpiło.
Czyli mogę zrobić np. tutaj.
Specjalna zmienna Dollar
event jest to zmienna która sama jest tylko tutaj przy budowaniu zdarzeń.
Ja mogę z tego zdarzenia różne informacje
wyciągnąć na przykład to klawisz albo target czyli element na którym
wystąpiło zdarzenie import i mogę z niego wysiąść walił bezpośrednio w ten sposób.
I tutaj CMS trwa.
Mogę użyć tego albo Rafa nie ma znaczenia dla tegoż że faktycznie jeśli tu jest
przyjęte zdarzenie to to zdarzenie będzie powodowało oderwanie ekranu.
Zobaczmy Raz Dwa Trzy.
Nic się nie dzieje dlaczego zdarzenie.
Dopiero na zakończenie edycji dopiero za opuszcza pole dopiero się pojawia.
Innego.
Spróbujmy też na przykład AP czyli gdy ktoś opuści klawisz.
5.
I teraz zobaczmy jak ładnie działa.
Ale obserwujemy ten element.
Jeśli mamy zmienną tymczasową to lepiej by
było faktycznie tą długość też pobierać z tej zmiennej tymczasowej.
Dlaczego tak.
Dlatego że jeśli wiąże się dwie zmienne
referencyjną to tylko jeden element się aktualizuje jeśli wartość elementu
umieścił już tutaj w kodzie to później wszystkie miejsca gdzie w HTML
to znajduje się za tolerują więc jest to lepsze podejście.
Więc zawsze możesz odwołać się do tej wartości ale lepiej jest po prostu każde
zdarzenie każdą zmianę wsadzić sobie gdzieś tu.
I masz pewność że zawsze się to prze wędruje nie będzie nigdy starych wartości
w tych wrażeniach czy pojętej po prostu żeby zawsze jeśli coś zmieniasz to by tam
był event pod pięty no i najlepiej żeby te zmiany nowe dane
żeby zawsze wróciły z powrotem do komponentu.
Może być to dodatkowo osobna zmienna AP i każdą taką klik na to
przekazują dalej albo możemy w ogóle uprościć sprawę
pozbyć się tej zmiennej tymczasowej i po prostu z każdą literą wskażą klawisze
bezpośrednio modyfikować nasz obiekt i user w wersji muzealnej w ten
sposób przycisk Change natomiast nam zupełnie niepotrzebne
czyli do wyświetlenia używamy tej zmiennej przy każdym klawiszem aktualizuje my z
każdym klawiszem tą zmienną z każdym klawiszem Angers sprawdza co się zmieniło
i aktualizuje Text HTML a wyrażenia i wartość.
Zobaczmy.
Kręcą jak i teraz wskażą klawisze. To działa.
Uważaj tylko bo na przykład jeśli ktoś zrobi kontrolę.
żeby to zadziałało na pewno.
Jeśli ktoś robi prawym np.
prawym wklej to możemy też zgubić niektóre
niektóre zmiany więc lepszym zdarzeniami jest zdarzenie import.
Jest to zdarzenie HTML owe nie jest to specjalny ambulans jest to normalnie
zdarzenie kredytowe import o tyle fajne że ono reaguje na dowolne zmiany i w ten
sposób masz gwarancję zobacz że każda zmiana każdy akt użytkownika
na pewno za zły ekran jest masa kodu którego nie musimy pisać.
Bank robi to za nas.
Musimy powiadomić go o każdej zmianie.
Nawet jak tu kliknąć w ten sposób i umieć jeszcze powiem nie.
Małpę serduszko i nie wiem co tu jeszcze będzie kwiatka.
On reaguje z tym bez problemu mogę nawet
wyciąć tekst mogę wnieść jakiś tekst opuścić nieważne co zrobimy Anglia
gwarantuję że wszystkie elementy na ekranie są.