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+
Ostatniej sekcji naszej strony głównej
znajdzie się taki prosty formularz kontaktowy gdzie ktoś będzie mógł
wypełnić sobie jakieś dane wyrobić sobie temat wiadomości wysłać tam
wiadomość i teraz pokażę tobie jak można taki prosty HTML owy formularz nie ma
w nim nic specjalnego jak możemy go spiąć aby na przykład zakaz zmienić coś w
którymś polu to te dane znaleźć na necie lub w drugą stronę.
Jeśli mamy już gotowe dane w komplecie to jak wypełnić tymi danymi pola formularza.
Jeśli robiliśmy to w poprzednich lekcjach to był taki bardzo prosty sposób.
Tutaj Pokażę ci kilka różnych możliwości w tym bardzo fajny moduł formularzy który
nam troszeczkę przyśpieszy prace zaczniemy od takiego prostego przykładu
czyli stworzyć jakiś taki kontakt forum i w środku będziemy mieli po kolei
wszelkie dane formularza czyli nam to będzie tekst e-mail.
To będzie też tekst i tak dalej czyli agreement to
będzie buli prawda fałsz to PIK czyli temat też tekst.
No i najważniejsze wiadomość czyli tekst.
Teraz chciałbym
tutaj te informacje tymi informacjami wypełnić tutaj ten obiekt
czy jak pamiętasz musiałbym obserwować kiedy się bardzo szybko zmieni
i za każdym razem z tego eventu z tego zdarzenia wyciągnąć odpowiednią wartość i
przypisać ją w odpowiednim miejscem w danych czyli taki szybki przykład
powiedzmy sobie Change event tam w środku target i Value
target to jest ten GIF i jego wali to jest wartość tuż po zmianie
i teraz chcą to przypisać do nam czyli do naszego Contact form.
Kropka.
Przy tym to wartość by zobaczyć co się dzieje z tym obiektem
byśmy widzieli na żywo co się w nim znajduje.
Te utwory tutaj jeszcze reformator bo ładnie.
Nie ma cięć spacji przez HTML tylko żeby zachował odpowiednie formaty.
Full contact for przepuszcza przez sąd żebyśmy mogli
zobaczyć jak Jackson całą zawartość tego naszego morza
kontaktowego musi jeszcze w maju wpisze powiedzmy anonim.
Może też w drugą stronę co zrobić jak
komentarz że wartość początkowa ma być pobrana stąd
i przypisane do wagi czyli indeks powinien mieć domyślnie anonim
jeśli zmieni wartość to powinno się zmienić w formularzu zobaczmy.
Czyli mamy teraz tutaj anonim i tu jest anonim.
To się zgadza.
Jeśli tak pisać to tych zmian nie widzimy na żywo.
No to dlatego że część to zdarzenie które
występuje kiedy ja skończę pisać kiedy opuszczę to pole.
Wtedy jak widzisz się aktualizuje. Czyli np.
musielibyśmy wiedzieć że jesteśmy przy każdej zmianie to np.
zmniejszona lub Kidman
ale też na przykład jeśli ktoś naprawdę świetnie tekst to też to nie zareaguje.
Więc znowu może inne zdarzenie.
Jeśli mieliśmy kolejny element np.
to samo chcieli zrobić dla tutaj
powiedzmy Xboxa no to musimy wiedzieć tak że to jest agreement czyli która zmienna.
Spróbujmy walił import to w ten sposób.
To ten czy boksu.
Widzisz też źle się zachowuje.
Musimy wiedzieć o tym że to nie jest.
Tylko czekać.
Jak widzisz praca z formularza mi.
Trzeba wiedzieć jakie pole jakiego typu
pole gdzie przepisać dane i jakie elementy użyć tutaj w różnych sytuacjach.
Jest to dużo informacji które trzeba podać ręcznie za każdym razem żeby to działa
prawidłowo i czasami mieć też taką bardzo wąską dokładną obrazami to możesz
w tę stronę właśnie dwukierunkowy wspinać pokazują dane do środka.
Wyciągamy z powrotem i w ten sposób to
pole jest synchronizacja dwustronne z tymi danymi.
To jest pytanie czy może troszeczkę krócej
zapisać bo jest to jak widzisz troszkę dużo kodu i dużo rzeczy do zapamiętania
dla każdego pola musimy wiedzieć jaki event takie Jaka własność.
Na szczęście Angola posiada bardzo fajny moduł gotowe formularzy który pozwoli nam
to zrobić prościej czyli zamiast wiedzieć czy to ma być Walii czy to czy
mogę po prostu użyć sobie czegoś takiego jak model i teraz domyślnie w ogóle że
jak spróbuje model to taki błąd że Qian odbijać będzie model.
Ponieważ to nie jest znana właściwość
go nie rozpoznaje dyrektywy będzie model a nie.
Tak samo jak będzie klastrów nasze dyrektywy jest zachowaniem które mogę
przypiąć do elementu pod warunkiem że ten model jest zdefiniowany.
Tez muszę żeby on działał mógł użyć to muszę iść naszego modelu.
Tu się znajdą się wszystkie dyrektywy i
komponenty znajdują się tutaj jakie za importowane także dyrektywę Anglii
za importowane z tego modułu teraz mogłyby nas pokusić żeby dopisać N czy model.
Tutaj w ten sposób i za importować go z
pakietu Angola Forbes musiały same importować.
To nie zadziała za dobrze. Zobaczmy.
To pokazuje że problem przy kompilacji A
to dlatego że ten model nie działa w pojedynkę.
On potrzebuje kilku innych dyrektyw
współpracujących do działania dlatego jest miejscami gdzie młody
importować z importuje cały moduł i przeważnie jeśli chcesz kupować
właśnie takie biblioteki itd to nie import pojedynczych właśnie klas pojedynczych
komponentów tylko import i zawsze cały moduł bo ten moduł zawiera od razu cały
zestaw gotowych wszystkich komponentów czy dyrektyw nie tylko tę jedną dyrektywę
którą myślę że Ty potrzebujesz naprawdę na potrzeby czegoś jeszcze.
I teraz moduły jak widzisz dodam do deklaracji to nie zadziałało.
Pamiętaj żeby moduły tutaj dodać wraz z modelami.
Jak masz wątpliwość zobacz gdzie są komponenty i dyrektywy są w deklaracjach.
Elementy HTML owe są tutaj jesteś masz paczkę z wieloma oponentami z
wieloma dyrektywami to musisz ją za importować z importu.
Jeśli masz wątpliwość po prostu Spójrz gdzie są komponenty tam komponenty.
Spójrz gdzie są moduły i tam już moduły
czyli moduł jak tylko zobacz dodałem do portów tak mój błąd automatycznie znika
ten model teraz jest tym elementem czyli tam wypełnił tymi danymi
elegancko formularz ale synchronizacja zmian w drugą stronę.
No to się nie dzieje przez model to się dzieje dlatego że tutaj mamy
nasz event dziś event i spróbuję zobaczyć czy te dane będą proponowane z naszego
pola HTML owego komponentu to jak widzisz to się teraz nie dzieje.
Jeśli spojrzymy tutaj to już wiesz że jest to po prostu import
czyli dyrektywa będzie model importu który nazywa się także będzie
model i wartości które przypisują do tej dyrektywy.
Ona po prostu ustawia jako wywalił tutaj lub np.
selektywnie. Czy czeka na innych elementach formularza.
Jeśli chcemy wiedzieć czy się coś stało w
środku coś się zmieniło to także musimy dodać event.
Czyli mogę jeść jakiś zwykły znowu event Change albo import.
Ale spójrzmy się pojawił jeszcze dodatkowo event NG model Change.
Teraz nie musimy wiedzieć czy to jest impuls czy też czek czy to wcale
nie musi być dokładnie jaki typ pola emituje jakieś zdarzenie tylko ten model.
Ten model przechwycił oryginalne znaczenie
i na event Emitent wyemituje auto put z tą informacją co jest jeszcze bardzo fajne.
Nie muszę wiedzieć jaki jest rodzaj pola gdzie ją to zawiera.
Czym jest target check.
Czy target Select czy Target walił tylko
sam event to już jest scena dla nas sama wartość.
Czy jak widzisz dużo prościej po prostu przypominam sobie tutaj Change i went
to jest czek możesz tylko zapomnieć o tym że te dane trzeba gdzieś przypisać czyli
w ten sposób to nie zadziała jeśli chcemy zsynchronizowane to z tym polem.
Tutaj kontakt tak nam.
Wartość z powrotem do tego pola.
Zobaczmy czy to zadziała.
Czyli teraz tak to co tutaj mamy ustawiane jest tu
nawet gdyby tutaj miał trup na początku to to trup będzie ustawiony tutaj jako sala.
Anonim pojawi się tu jeśli tu wprowadzą zmiany są od razu dostępne w krypcie.
Jeśli tu wprowadzą zmiany widzisz one też
się pojawiają kolejne po latach tak samo się zachowa
aczkolwiek jedna rzecz już mi się nie podoba.
Dodam że 2 jeszcze samo to jest to się przydaje takie osobne podłączenie np.
powiedzmy ten name powiedzmy zrobić tu powiedzmy po powiększyć albo ten
ktoś wpisał te dane to może chciałbym jeszcze je jakoś tam zwali.
Więc jeśli masz potrzebę przechwycenia modyfikowania tych danych w locie pomiędzy
komponenty a formularze to może dojść jakieś specjalne modyfikacje jakieś
specjalne transformację nim te dane trafią we właściwe miejsce.
Jeśli jednak po prostu chcesz spiąć to pole z tą zmienną w dwie strony żeby
pracowały bez żadnych specjalnych zmian to pokaże ci fajnie trik.
Cały ten event
można schować do środka tutaj w postaci takich napisów okrąg
teraz nie pomyśl że nie możesz umieścić nawozów na zewnątrz.
To nie zadziała.
Tak to jest nasza skrzynka i do skrzynki banany wkładamy do środka bananów.
Nie umiesz po raz szynką bo zgubić tak
łatwo będzie zapamiętać banany zawsze te skrzynki.
W ten sposób i teraz jak to działa to nie jesteś psem dla model Change nakaże
ci import powiedzmy A B C jeśli ten import ma
w parze AUD but który nazywa się a b c Change lub placki i placki change to każdy
taką parę możesz zwinąć połączyć właśnie w ten sposób jako parę
powiązanych import model jest akurat jednym takim przykładem
Zobacz który bardzo fajnie się to pisze bo robi to on gdzie model
wskazuje która zmienna czyli kontakt form kropka email i już mam te dwa pola spięte
ze sobą i będą się one w dwie strony chronić.
Zawsze pamiętaj że możesz zrobić to tylko w jedną stronę jeśli chcesz żeby tylko nas
używać w ten sposób tylko nad wpisujemy dane.
Jeśli chciałbyś tylko słuchać to nie
możemy niestety samego eventu zrobić musisz umieścić tutaj atrybut żeby ta
dyrektywa się tutaj zamontowany jako obiekt i dopisać tutaj zdarzenie ręcznie.
Tak jeśli chcesz jednak w dwie strony no to skrzynka
banany będzie model i to samo mogę robić po prostu dla
wszystkich tych standardowych HTML owych pól formularza czyli import import import.
Co tu mamy. Mamy Select.
Tak samo mogę sobie ustawić tutaj Select i jesteśmy to plik.
I tutaj wartość walut wybranego pola
aktualnie pojawi się w pliku czyli powiedzmy postawimy
pierwsze tutaj jako New żeby ten pierwszy był jako sekretariatu
żeby zmienić kolejność żeby też byśmy widzieli że to zadziała.
I tu jeszcze mamy tekst najważniejsze
czyli nasz Message też podjęte w tym miejscu.
Mesjasz jest na początku pusty message.
Jak też bardzo szybko.
Błyskawicznie mogę to formalnie złożony
skomplikowany formularz synchronizacji z obiektem JavaScript.
Tutaj mamy ok przycisk powiedzmy Send message.
Jeśli klik klik powiedzmy Send message i w tej funkcji Send message
Widzisz mamy bardzo prosty dostęp do tych danych.
Pomogę po prostu zrobić konsol blog na przykład i te dane są dostępne tutaj DS.
Czy może być dowolnej biblioteki służącej do wysyłania maili.
Tak dowolnego serwisu podpiąć tutaj potrzebne dane klucz adres.
I te wszystkie dane powstawać odpowiednie
parametry i stąd wysłać e-mail do użytkownika.
Ja sprawdzę tylko ktoś ładnie synchronizację i teraz cokolwiek zmienia.
Ok.
Której na początku widzisz opcja nie jest zaznaczona Jeśli zmieniać coś innego to
tutaj się ładnie zmieniają nam też opcje to plik.
No i najważniejsze jest to cały obiekt jest tu dostępny.
Możemy go wysłać do bazy danych możemy
wysłać maila możemy go zapisać i robić co chce.
Oczywiście tutaj zgoda nie powinna być na starcie.
To zmieni jeszcze na Falls
i jest to taki bardzo prosty i szybki sposób na zrobienie prostego formularza.