od Podstaw
9 godz. 20 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJavaScript to język programowania, który napędza niemal wszystkie strony internetowe. Dopełnia on technologie HTML i CSS, za pomocą których tworzymy strukturę i wygląd dokumentu. Co jednak w sytuacji, gdy chcemy po kliknięciu w wybrany przycisk wyświetlić powiększone zdjęcie lub wczytać dodatkowe dane z serwera? To właśnie w takich sytuacjach przydaje się język JavaScript i tzw. DOM API, dostępne w przeglądarce. Jak się przekonasz, możliwości nowoczesnych przeglądarek w połączeniu z tym językiem są naprawdę ogromne.
Język JavaScript może być używany nie tylko na stronach internetowych. Z tego powodu, w kursie omówimy najpierw najważniejsze konstrukcje tego języka, które są niezależne od platformy uruchomieniowej. Dzięki temu zbudujesz fundamenty niezbędne do tego, by wykorzystać ten język np. w środowisku Node.js. Krok po kroku omówimy sposoby tworzenia zmiennych, dostępne typy danych i operatory. Następnie zobaczysz jak tworzyć tablice i obiekty, z jakich instrukcji warunkowych i pętli możesz korzystać, a także jak tworzyć własne funkcje. Przekazywana wiedza uwzględniać będzie nowości, które pojawiły się w języku wraz z rewolucyjnym standardem EcmaScript 6 (ES6).
Sam język JavaScript to nie wszystko, by tchnąć ducha w strony internetowe. Z tego powodu, przeglądarki internetowe udostępniają tzw. DOM API. To interfejs, który z użyciem języka JavaScript pozwala na manipulację treścią i wyglądem strony. W kursie bardzo dokładnie omówimy czym jest Obiektowy Model Dokumentu, a także jak z nim pracować. Zobaczysz jak tworzyć nowe elementy HTML i wstawiać je na stronę, jak modyfikować ich treść, atrybuty, style czy klasy CSS. Poznasz sposoby na odczytywanie położenia elementu na stronie i jego wymiarów, które będą niezbędne w wielu sytuacjach. Dowiesz się także, jak przypisywać obsługę zdarzeń w przeglądarce, by np. wywołać własną funkcję, gdy ktoś kliknie w wybrany przez Ciebie przycisk.
JSON to popularny format wymiany danych, a Ajax to potoczna nazwa dla asynchronicznych zapytań HTTP, które wysyłać możemy z poziomu kodu JavaScript. Dziś niemal każda strona internetowa wykorzystuje te technologie. W niektórych przypadkach jako dopełnienie podstawowej funkcjonalności witryny, a w innych jako główny motor napędzający stronę. Jeśli kiedykolwiek widziałeś, jak na stronie internetowej jakaś treść "doczytuje" się np. podczas przewijania - widziałeś w praktyce Ajax. W jednym z rozdziałów kursu zobaczysz, jak pracować z tym formatem, a także jak wysyłać wspomniane zapytania do serwera.
Choć kurs który masz przed sobą, jest kursem dla początkujących, to aby zrozumieć jak działa język JavaScript i jak z nim się współcześnie pracuje, omówimy dwa ważne tematy - zarządzanie zależnościami i bundlowanie kodu. Dowiesz się czym jest npm i jak z jego pomocą pobierać paczki gotowego kodu z internetu, a także jak sprawić, by bez trudnu dołączać je do własnego kodu. W tym celu skorzystamy z narzędzia snowpack, które pozwoli nam także na optymalizację kodu przed jego wypuszczeniem w świat. Na tym etapie omówimy również jak działają moduły ESM, pozwalające dzielić kod na mniejsze części.
Kurs podzielony został na możliwie krótkie lekcje, do których w każdej chwili możesz wrócić. Jeśli zatem zapomnisz jak odczytywać wymiary elementu na stronie, szybko odnajdziesz odpowiednią lekcję. Czym jednak była by sama teoria i proste przykłady, bez pokazania, jak połączyć je w całość i wykorzystać w praktyce? Dobra wiadomość jest taka, że w kursie stworzymy aż 5 praktycznych projektów, wykorzystujących zdobytą wcześniej wiedzę. Najpierw napiszemy program losujący Dużego Lotka, następnie dynamiczny pasek postępu przeczytania artykułu, dymek pojawiający się nad elementem po najechaniu na niego myszą, wygenerujemy tabelkę w użytkownikami na podstawie danych JSON, a na koniec tworzymy prosty odtwarzacz wideo, z możliwością pauzowania i przewijania filmu.
Kurs ten jest dla wszystkich osób, które znają już podstawy HTML i CSS i chciałyby przejść poziom wyżej i dodać do swoich stron dynamiczności. Żadna wcześniejsza wiedza z zakresu JavaScript nie jest wymagana, ale zalecana jest podstawowa wiedza z zakresu samego programowania (czym są zmienne, pętle, funkcje itd.). Materiał ten będzie również świetnym odświeżeniem i usystematyzowaniem wiedzy dla osób, które już z tym językiem miały do czynienia. Po przerobieniu tego kursu będziesz gotowy, by poznawać język JavaScript dalej i zacząć korzystać z nowoczesnych frameworków.
W tej lekcji pokażę Ci jak działa
przerywanie lub kontynuacja pętli i będzie to miało zastosowanie do wszystkich
rodzajów pętli, jakie do tej pory pokazałem.
Więc wyobraź sobie sytuację, w której
chcielibyśmy wyświetlić liczby od 0 do 20, ale tylko liczby parzyste.
Zrobilibyśmy sobie taką pętlę for, gdzie utworzyli byśmy zmienną i równa się zero.
Chcemy iterować tak długo jak jest
mniejsza lub równe 20 i następnie zwiększamy wartość i.
Czyli standardowa pętla. Ale w środku
musielibyśmy zrobić sobie warunek jeżeli i modulo z 2,
to też Ci pokazywałem już w tym kursie, jest równe 0
to oznacza, że mamy do czynienia z liczbą parzystą.
Wówczas tylko wtedy chcemy
wyświetlić taką liczbę, a więc będziemy w ten sposób pomijać liczby nieparzyste.
Zobaczmy, jak nam się ułoży
w przeglądarce. Rzeczywiście wyświetliliśmy
tylko liczby parzyste. I z tym kodem nie ma nic złego.
Wszystko jest w porządku. Ale chcę Ci pokazać, jak działa słowo
continue po to, żeby można było kontynuować pętlę, nie
wykonując kodu, który jest w niej poniżej, ale też nie zatrzymując tej pętli.
Czyli ten przykład moglibyśmy zrobić troszeczkę inaczej, a więc zawsze
wyświetlać i to by nam wyświetliło wszystkie liczby,
ale sprawdzać tutaj w warunku, czy liczba jest parzysta, odwrócimy sobie ten warunek.
Jeżeli liczba nie jest parzysta, to chcemy
kontynuować pętlę. I wpisujemy tutaj słowo continue dokładnie w ten sposób.
To jest słowo, które będzie działać tylko wewnątrz pętli i ono oznacza tylko tyle,
że jak dojdziemy do tego momentu, to znaczy, że ten warunek się wykona,
mamy do czynienia z liczbą nieparzystą, to mówimy kontynuuj, czyli nie wykonuj
żadnego kodu, który jest poniżej w tym bloku, ale przejdź do kolejnej iteracji
pętli. Czyli w praktyce będzie to działać dokładnie tak samo i czasami to jest
bardzo przydatne z tego powodu, że tutaj mieliśmy przykład gdzie tu był console.log,
czyli jedna linijka, ale czasami tego kodu w pętli będzie znacznie więcej i jak go
oplatamy takim if to on staje się trochę mniej czytelny.
Natomiast możemy cały ten kod zawrzeć tutaj.
To może być dużo tego kodu, a na samym początku zrobić sobie jakieś sprawdzenie
i jeżeli tu będzie warunek fałszywy to kontynuujemy, czyli pomijamy cały ten kod
dla tej iteracji. Więc to już zależy od konkretnego przypadku.
Niemniej jednak tak działa słowo continue.
Zobacz, że efekt jest dokładnie ten sam. Czyli jak napotkamy słowo continue to się
wykona to nie wykonujemy kodu poniżej, ale przechodzimy do kolejnej iteracji pętli.
Drugim słowem, z którego można skorzystać
w pętli jest break i ono sprawia, że przerywamy całkowicie działanie pętli,
czyli nie wykonujemy kodu, który jest poniżej, ale także nie przechodzimy już do
kolejnej iteracji. I będę chciał Ci to pokazać na praktycznym przykładzie.
Utworzymy sobie taką tablicę numbers, gdzie będziemy mieli jakieś liczby np.
2, 3, 6, 100, 0 i powiedzmy 52 i 11
i chciałbym napisać taki kod, który sprawdzi mi czy w tej tablicy znajduje się 0.
I od razu Ci powiem, że to można zrobić w bardzo łatwy sposób w języku JavaScript
pisząc po prostu numbers czyli odwołując się do tej tablicy
i następnie includes 0 i to nam już zwróci true lub false
ale ja chcę Ci to pokazać na innym
przykładzie po to, żeby pokazać Ci jak działa break, z którego
jednak możesz korzystać w bardzo wielu różnych sytuacjach.
Teraz sobie zrobimy pętlę for of, czyli możemy powiedzieć let number
of numbers, a więc pod number będziemy mieli kolejno 2, 3, 6 itd.
I chciałbym jeszcze sobie tutaj utworzyć
taką zmienną jak containsZero, czyli czy ta tablica zawiera 0.
Ustawmy to na false. Czyli na początku mówimy, że nie zawiera zera.
I chciałbym teraz iterować po całej tej tablicy i w momencie jeżeli natrafimy na 0
to tutaj chciałbym przypisać true i przerwać działanie tej pętli, bo nie ma
sensu dalej sprawdzać czy 52 jest równe 0 czy 11.
Jak dotarliśmy do zera to nasz kod już
można powiedzieć, że powinien się zakończyć.
Jak to zrobimy?
Zrobimy sobie tak jeżeli number równa się 0 to chcemy powiedzieć contains 0 równa się
true i następnie break. Coś takiego chciałbym zrobić.
A przy okazji możemy również tutaj poniżej
wyświetlić sobie number, żeby zobaczyć w konsoli co się dzieje.
Zobaczmy.
Ok, wyświetlił nam się jakiś błąd. Tutaj powinienem tą stałą nazwać poprawnie.
OK i może jeszcze sobie wykomentujmy to, żeby nam się nie mieszały te wszystkie console.log
Zauważ, że dokładnie to zadziałało, czyli
wyświetliliśmy 2, 3, 6 i 100 bo one się nie równały 0,
w kolejnej iteracji już wykonał się ten kod,
czy number jest równe 0?Tak
Ustaw containsZero na true i break.
Jeżeli bym nie zrobił tego breaka to
sprawdzali byśmy dalej, czyli sprawdzali byśmy 52 i 11.
A nie ma sensu tego robić skoro już osiągnęliśmy swój cel.
I teraz jeżeli sobie podejrzymy containsZero mamy tutaj wartość true.
Zatem z tej lekcji zapamiętaj, że słowo
kluczowe continue wewnątrz pętli sprawia, że kod poniżej się nie wykonuje i
przeskakujemy do kolejnej iteracji tej pętli,
natomiast break użyte w dowolnym miejscu w pętli sprawia, że również kod poniżej się
nie wykonuje, ale pętla zostaje zatrzymana i wyskakujemy
w to miejsce.
Gdyby tutaj był jakiś kod, wykonywał by się on dalej.