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.
Nieodzownym elementem tworzenia aplikacji
internetowych z użyciem języka JavaScript jest korzystanie ze zdarzeń.
I w tej lekcji odpowiemy sobie krótko, na czym te zdarzenia polegają.
Wyobraźmy sobie taką sytuację, mamy stronę
internetową i jakieś dwa obrazki w formie galerii i teraz chcielibyśmy po kliknięciu
w jeden z tych obrazków wczytać jego powiększoną wersję.
Jest to coś, czego nie da się zrobić z użyciem HTML i CSS.
Do tego potrzebujemy właśnie języka JavaScript, ale nie tylko, bo musimy
skorzystać z tak zwanych zdarzeń w przeglądarce internetowej.
Zdarzenia polegają na tym, że możemy jakby powiedzieć z poziomu naszego kodu
przeglądarce, że jeżeli na przykład ktoś kliknie w dany element, to chcemy wywołać
naszą funkcję JavaScript, no i w tej funkcji moglibyśmy coś zrobić, np.
utworzyć nowy element z tym powiększonym obrazkiem i wstawić go na stronę.
Więc wyobraźmy sobie kliknięcie w jeden z
tych obrazków i następnie pokazanie większego elementu.
A zatem tutaj nie tylko musimy skorzystać
z języka JavaScript, ale także ze zdarzeń w przeglądarce internetowej.
Zdarzenia te mogą być podzielone na kilka grup.
To znaczy np. takie, które wywołuje użytkownik gdzieś
klikając, albo takie, które są wykonywane przez przeglądarkę, np.
kiedy strona się wczyta.
A zatem zerknijmy sobie na te najważniejsze grupy.
Będziemy mieli tutaj
UI events i to są właśnie te eventy, których nazwy tutaj podaję, takie jak load,
unload, resize czy scroll, które będą się wywoływać np.
kiedy cała strona się wczyta, albo kiedy
ktoś chwyci za przeglądarkę i ją zeskanuje, czyli po prostu zmniejszy okno
wtedy wywoła się takie zdarzenie resize,
kiedy będzie przewijał kursorem
myszy będzie wielokrotnie wywoływane zdarzenie scroll.
Oznacza to tylko tyle, że my w naszym kodzie możemy zarejestrować funkcje, które
będą się wykonywać właśnie kiedy te zdarzenia się wydarzą.
Następnie mamy np.
Mouse events i to są wszelkie zdarzenia
związane z myszą, czyli kliknięcie na jakiś element, podwójne kliknięcie,
najechanie myszą na ten element czy opuszczenie myszy z tego elementu.
To oczywiście nie wszystkie zdarzenia.
Ja tutaj podałem tylko te najważniejsze, aby Ci uzmysłowić jak to wygląda.
Następną grupą będą Keyboard events i będzie to np.
wciśnięcie przycisku albo podniesienie przycisku np.
widzisz, tutaj mamy zdarzenie keydown, więc
ono się wywoła wtedy kiedy przycisk będzie wciśnięty i jeszcze zanim zdążymy go puścić.
A np. keypress wywoła się wtedy, kiedy wciśniemy i puścimy przycisk.
I w różnych sytuacjach różne te zdarzenia mogą okazać się dla nas bardzo pomocne.
No i jeszcze jedną grupą mogą być np. Form events.
To będą zdarzenia związane z formularzami, czyli w momencie, kiedy ktoś będzie chciał
wysłać formularz, wywoła się zdarzenie submit, które możemy przechwycić i np.
zwalidować formularz.
Będą to też takie zdarzenia jak focus czy
input, które się uruchamiają na polach typu input.
Inną grupą zdarzeń mogą być tzw.
Media events, które się będą wywoływać na
elemencie video lub audio i będzie tam na przykład playing, ended
jeżeli zakończymy oglądanie video czy np.
timeupdate, które będzie wywoływane za
każdym razem, gdy będzie zmieniał się czas obejrzenia danego video.
To, co ważne.
Za każdym razem, kiedy wywoła się podana przez nas funkcja na dane zdarzenie,
otrzymamy tam taki specjalny obiekt event, który będzie przechowywał ciekawe i
przydatne informacje na temat zdarzenia, które właśnie się wykonało.
Będzie tam m.in. target, a więc odwołanie
do elementu, na którym wywołało się takie zdarzenie.
Będziemy mogli odczytać np.
współrzędne myszy, czyli gdzie był kursor
myszy w momencie wywołania się takiego zdarzenia.
Możemy również odczytać np.
wciśnięty klawisz, jeżeli byłoby to
zdarzenie o typie keyboard czy powiedzmy ilość wysłanych danych.
Jeżeli będziemy wysyłali Ajaxem dane do serwera, również w zdarzeniach będziemy
mogli odczytywać ile tych danych już się wysłało aby np.
wyświetlić jakiś progress bar.
To zatem tyle jeżeli chodzi o teorię na temat zdarzeń.
W kolejnych lekcjach zobaczysz jak pracować z nimi w praktyce.