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.
Tym rozdziałem rozpoczniemy poznawanie
DOMu i
na początek odpowiedzmy sobie na pytanie czym w
zasadzie jest DOM?
DOM jest to skrót od Document Object Model z angielskiego
czyli po polsku Obiektowy Model Dokumentu.
Wyobraźmy sobie taki kod HTML. Mamy tutaj
najprostszą możliwą stronę internetową.
Dla nas jest to tylko kod HTML, a więc jakiś tekst i w momencie
kiedy przeglądarka wyśle zapytanie do serwera
od serwera otrzymuje
właśnie taki tekst, czyli kod HTML i na jego
podstawie tworzy drzewo dokumentu.
To drzewo w przypadku dokładnie tego kodu
HTML będzie wyglądać w ten sposób.
Jak widzisz na samej górze będziemy mieli Document, to jest taki główny element
a potem wszystkie jego dzieci,
takie jak html, w którym znajduje się head, title czy np.
body, no i wszystkie pozostałe
elementy. I jak możesz zobaczyć każdy z tych
elementów, to jest albo element HTML, albo np.
tekst. Dlatego, że w
Obiektowym Modelu Dokumentu mamy różne rodzaje węzłów,
ale wszystkie te elementy, które
widzisz po prawej stronie
są to tak zwane węzły.
Zatem jeżeli przyjrzymy się np.
temu tekstowi
Treść paragrafu, to jest to węzeł tekstowy, którego
rodzicem jest element p.
W przypadku takiego drzewa możemy mówić o relacjach takich jak w rodzinie, czyli np.
o rodzeństwie i powiedzielibyśmy, że
dla elementu body jego rodzeństwem jest element head,
natomiast jego dziećmi czy
potomkami są elementy takie jak div, a następnie p.
W przypadku
paragrafu jego rodzicem będzie element div, natomiast
jego przodkiem będzie element body, a także html.
O tych wszystkich relacjach powiemy sobie jeszcze później, kiedy
będziemy konkretnie
się do nich odwoływać w kodzie.
Kiedy mamy już takie drzewo dokumentu utworzone
i strona internetowa się
wczyta, to z poziomu kodu JavaScript możemy korzystać
z tak zwanego DOM API.
API jest to skrót od Application Programming Interface
i takie API pozwala nam między innymi na modyfikowanie i tworzenie elementów HTML.
A zatem jeżeli na początku, kiedy nasza strona się wczytywała
niektórych elementów na stronie HTML nie było
to my możemy je dynamicznie utworzyć z
poziomu języka JavaScript i wstawić na stronę.
Podobnie możemy modyfikować już istniejące elementy.
Możemy również manipulować
stylami i klasami CSS, aby zmieniać wygląd
strony już po tym
jak ona została wczytana, np.
kiedy ktoś kliknie
na jakiś przycisk.
Jeśli chodzi o takie kliknięcia
to możemy w tym DOM API
również zastosować coś, co nazywa się obsługą zdarzeń.
Czyli możemy powiedzieć, że jeżeli ktoś kliknie w jakiś przycisk
chcemy wykonać jakiś kod i ten kod może np.
wczytać dodatkowe dane z serwera i wstawić je na stronę.
Oprócz DOM API w przeglądarce są jeszcze inne
tego typu API i one pozwalają nam między innymi na wysyłanie zapytań HTTP
właśnie po to, żeby coś dodatkowo pobrać z serwera i np.
wstawić na stronę,
możemy odtwarzać multimedia
czyli np. stworzyć
multimedialny odtwarzacz filmów
albo audio,
możemy wyświetlać powiadomienia push czy np.
odczytywać geolokalizację użytkownika.
A więc wszystkie te rzeczy
zrealizujemy za pomocą
języka JavaScript, ale one nie
są częścią języka JavaScript, tylko są
udostępniane w przeglądarce internetowej przez
właśnie takie specjalne API.
Posługując się językiem JavaScript, wszystkie z tych rzeczy oraz
wiele więcej będziemy mogli wykonać.
No i jeszcze jedną rzeczą, którą na
przykład możemy zrobić, będzie tworzenie gier
za pomocą tzw.
elementu canvas. Jak zatem
widzisz Obiektowy Model Dokumentu
to jest po prostu drzewiasta struktura wszystkich
elementów HTML i do każdego
z tych elementów możemy się następnie odwołać
w kodzie JavaScript
i albo do takiego elementu dodać inne elementy, albo zmienić jakieś jego
style, klasy czy atrybuty,
a także w przeglądarce możemy wykonać
jeszcze więcej czynności, o których powiedziałem teraz.