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 zajmiemy się czymś, co jest bardzo, bardzo przydatne i bardzo często
wykorzystywane, czyli ustawianiem klas CSS dla poszczególnych elementów.
Dzięki temu będziemy oczywiście mogli
całkowicie zmienić wygląd jakiegoś elementu lub nawet całej strony.
I to jest coś, czego nie da się zrobić jakby w samym CSS.
My musimy wcześniej zdefiniować wszystkie
klasy, natomiast to jest właśnie potęga JavaScriptu, że możemy z użyciem właśnie
tego kodu zmieniać wygląd strony dynamicznie.
Więc mamy taką prostą stronę, na której
zdefiniowałem trzy klasy tj link, red i green.
Będziemy chcieli tymi klasami manipulować na tym oto elemencie link.
Czyli jest tutaj taki element,
będę chciał sobie go teraz wyszukać, więc zapiszemy go sobie do stałej
document.querySelektor i ma on klasę link
i będziemy chcieli na początek odczytać sobie wszystkie jego klasy
i powiem Ci, że można to zrobić taką starą metodą, która nazywa się className.
W zasadzie jest to właściwość, a więc link.className.
Zobacz to nam zwróci wszystkie klasy jakie są przypisane do tego elementu.
On ma aktualnie jedną klasę, tutaj więc tylko jedna została zwrócona.
Jest to dla nas zwracane, oczywiście jako wartość o typie String.
I teraz za pomocą className
moglibyśmy zmienić również klasę, czyli przypisać jej tutaj np. red.
Zauważ teraz ten link jest czerwony, ale to co się stało
to została usunięta klasa link, która tutaj była, czyli nadpisaliśmy klasę.
Z tego powodu nie jest dobrym pomysłem
korzystanie z tej właściwości className aby ustawiać jakieś klasy, chyba, że od
razu chcesz rzeczywiście ustawić sporo tych klas.
Możesz je tutaj podać po spacji.
Podobnie mógłbyś zrobić za pomocą setAttribute class.
Byłoby to dokładnie to samo.
Niemniej jednak mamy nowsze metody, które od wielu lat są wspierane we wszystkich
przeglądarkach i one pozwolą nam pracować konkretnie z pojedynczymi klasami.
Więc teraz będę chciał Ci pokazać jak one wyglądają.
Na początek będę chciał dodać klasę red do
właśnie tego linku i zrobimy to za pomocą klasy list.
To jest taki specjalny obiekt dostępny na
wszystkich elementach HTML i mamy pod nim pewne metody.
Jedną z metod jest metoda add, której przekazujemy właśnie string
i jest to klasa, którą chcemy dodać.
Zobacz, teraz dodaliśmy klasę red, ale nie
usunęliśmy klasy, która już tam wcześniej była, czyli klasy link.
Jeżeli chcielibyśmy dodać dwie klasy naraz lub 3, 5 itd.
to nie podajemy ich tutaj po spacji, ale
podajemy je jako kolejne parametr do tej funkcji.
Czyli ta funkcja może przyjmować dowolną liczbę parametrów.
Teraz dodaliśmy dwie klasy i red i green.
No i klasa green wygrywa z red, bo po prostu jest dodana później.
Kolejną metodą, tym razem służącą do
usuwania klas, będzie metoda również na obiekcie classList, która
nazywa się remove i powiedzmy, że chcę usunąć klasę red.
Jeżeli zrobię to w ten sposób, zauważ, że klasa red tutaj została usunięta.
Czyli jak widzisz praca z tymi klasami jest bardzo prosta.
No i mamy jeszcze jedną metodę, która nazywa się toggle.
Wygląda ona tak
również na obiekcie classList i ona nam doda klasę, jeśli jej nie ma i
usunie klasę, jeśli ta klasa tam aktualnie jest, więc możemy powiedzieć green.
A więc zanim to jeszcze wykonamy, zerknijmy sobie.
Klasa green jest, więc jak wykonamy toggle to ona powinna zostać usunięta.
I tak też się stało. I to jest fajne
jeżeli będziemy mieli dwa stany np.
na jakimś przycisku będziemy mieli klasę is loading,
powiedzmy będzie to taki spinner, który
nam pokazuje, że coś się wczytuje to wystarczy, że zrobimy toggle is loading,
no i jeżeli tej klasy nie ma zostanie dodana,
jeżeli jest zostanie usunięta.
Warto o tym wiedzieć, że nie musimy
sprawdzać czy jakaś klasa na elemencie jest.
Niemniej jednak, jeżeli chciałbyś mimo wszystko sprawdzić np. w if czy jakaś klasa
na elemencie jest dodana, to możemy się odwołać do classList i mamy tam metodę
contains, której również przekazujemy nazwę klasy. Więc możemy na tym etapie
zapytać czy klasa green jest dodana i może zamiast robić to w if to po prostu
zrobię to w console.log, ale pamiętaj, że to nam zawsze zwróci true lub false, więc
możemy z tego korzystać jak najbardziej w instrukcji warunkowej.
Zobaczmy.
Jak widzisz mamy false, bo tej klasy green
tam nie ma, dlatego, że ją usunęliśmy tym zapisem.
Natomiast gdybyśmy jej nie usunęli otrzymamy true.
Zostawię to w takiej formie.
I podsumowując mamy taką archaiczną
właściwość jak className, z której w zasadzie w ogóle nie musisz korzystać.
Ona nam odczytuje wszystkie klasy w formie
jednego stringu albo ustawia nam cały atrybut class,
natomiast mamy również nowsze metody na
obiekcie classList, które pozwalają nam dodawać klasy jak widzisz, usuwać klasy
czy robić toggle, a także sprawdzać czy klasa jest dostępna.