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 języku JavaScript, podobnie jak w każdym
innym języku programowania, mamy do czynienia również z operatorami
arytmetycznymi, czyli takimi, które pozwalają nam dodawać, odejmować czy np.
mnożyć. Będę chciał Ci je w miarę szybko pokazać
w tej lekcji. Więc utworzymy sobie na początek dwie zmienne number1 i number2.
I teraz będziemy mogli sobie utworzyć stałą tym razem,
a tutaj zrobiłem to z użyciem let, bo później będziemy jeszcze to modyfikować.
Tutaj oczywiście nie może być żadnej spacji w nazwie zmiennej.
Teraz utworzę sobie stałą res1 jak rezultat 1. Będę chciał w niej przechować
rezultat dodawania tych dwóch liczb, czyli 2 i 4.
Więc pierwszym z operatorów arytmetycznych będzie operator dodawania, czyli +.
No i korzystamy z niego
w ten sposób, wpiszemy number 1 i number 2.
Oczywiście tutaj nie musielibyśmy
podstawiać zmiennych, tu można literalnie podstawić jakąś wartość.
To nie ma żadnego znaczenia.
W każdym razie w ten sposób możemy dodać do siebie dwie liczby.
Operator plusa ma również jeszcze jedno zastosowanie w przypadku stringów. Bo
tutaj ważne jest to, że te dwie zmienne przechowują liczby, czyli typ
number i wtedy operator plusa wie, że ma je po prostu dodać.
Natomiast jeżeli użyli byśmy tego operatora na stringu, czyli na tekście,
to ten tekst zostanie połączony. I mogę Ci to teraz pokazać.
Napiszemy sobie const res2 jak rezultat drugi
i spróbujemy sobie dodać może na początek 2 jako number + 5 jako string.
W niektórych językach programowania taka operacja byłaby po prostu błędem.
W języku JavaScript stety albo niestety tak nie jest
i zobaczmy sobie po zapisaniu tego w konsoli przeglądarki
jaki będzie wynik takiej operacji. Zobaczmy.
No i wygląda na to, że jest to 25.
Co możemy tutaj zaobserwować.
Natomiast czy rzeczywiście jest to 25?
Zobacz dodaliśmy 2 i 5 i tak naprawdę to
zostało ze sobą scalone, a nie w żaden sposób dodane matematycznie.
I teraz, jeżeli byśmy sobie sprawdzili jakiego typu wartość jest przechowywana w
tej stałej res2, to możemy to zrobić z użyciem operatora typeof.
Skoro tu mamy dostęp do res2, tu już
widzimy, że jest to 25, ale możemy skorzystać z takiego specjalnego operatora
w języku JavaScript, który nazywa się typeof i tutaj podajemy jakąś dowolną
wartość albo wpisaną bezpośrednio, albo np.
poprzez zmienną.
Więc jeżeli zapytamy jaki jest typ
przechowywany w stałej res2, zobaczymy, że jest to string.
Natomiast w przypadku res1 pokaże Ci typeof res1
jest to number. Czyli tutaj zawsze
zwracana jest wartość taka string, ale mamy w niej napisane number albo string
albo jeszcze inne wartości jakie mogą być przechowywane.
Czyli to Ci pokazuje, że możemy również za
pomocą operatora plusa scalać ze sobą jakieś teksty,
natomiast w przypadku gdybyśmy przekazali
i number i tutaj string to zostanie to ze sobą połączone.
Natomiast częściej używa się tego
oczywiście, żeby połączyć ze sobą jakieś dwa teksty np.
imię + spacja + nazwisko.
Pamiętaj jednak, że ten operator plusa i
na typach liczbowych może operować i na typach właśnie takich jak ciągi znaków.
Natomiast jeżeli to pomieszane ze sobą to
jest to jak widzisz również scalane a nie dodawane matematycznie.
Jeżeli chodzi o inne operatory to oczywiście mamy również, jak możesz się
domyślić operator do odejmowania, więc możemy powiedzieć number1 minus number2,
następnie możemy pomnożyć,
number 1 i gwiazdka to znaczy mnożenie number 2.
Tutaj te białe znaki w języku JavaScript nie mają znaczenia,
jeżeli zapiszesz tak będzie poprawnie,
jeżeli byś zrobił coś takiego, też.
Przyjmuje się, żeby tutaj zrobić jedną spację, żeby to po prostu było czytelne.
Mamy również operator dzielenia number np.
2 podzielimy przez number 1.
W tej sytuacji wygląda to w następujący sposób.
Mamy również operator modulo i jest to reszta z dzielenia, więc możemy napisać
rezultat 6 i tutaj podstawię sobie literalnie np.
6 modulo, czyli taki procent, 3.
To nam zwraca resztę z dzielenia,
w tym przypadku tutaj powinna być wartość 0, bo 6 dzielone przez 3
wiemy, że żadnej reszty nam nie zostawia, czyli res 6
zobaczmy jest tutaj przechowywana wartość 0.
W ten sposób np. możemy sprawdzać czy mamy do czynienia z
liczbą parzystą czy nie, bo jeżeli będziemy mieli jakąś liczbę tutaj
powiedzmy w zmiennej byłaby jakaś liczba 6 i zrobimy modulo 2, to jeżeli nie zostanie
żadna reszta z dzielenia, to mamy do czynienia z liczbą parzystą.
Pokażę Ci tutaj jeszcze rezultat siódmy,
że możemy z modulo skorzystać na przykład na 6 modulo z 4.
I co nam to zwróci?
Jak widzisz 2 dlatego, że 6dzielone na 4 to jest 1 i
pozostałość to jest 2, czyli ta reszta z dzielenia właśnie nam tutaj zostaje.
Mamy również operator podnoszenia do potęgi.
On jest dostępny od ES6 czy jest
stosunkowo nowy w języku JavaScript, więc możemy powiedzieć np.
2 i dwie takie gwiazdki 2 to będzie 2 do potęgi drugiej.
Zobaczmy, res8 sobie
teraz wyświetlimy jest to 4 oczywiście,
więc w ten sposób możemy podnosić jakąś liczbę do potęgi.
No i mamy jeszcze takie operatory
przypisania od razu ze zmianą wartości i będę chciał Ci to pokazać.
Natomiast właśnie z tego powodu tutaj mamy utworzone z let zmienne, a nie stałe.
Czyli jeżeli chcielibyśmy zwiększyć
wartość tej zmiennej number na przykład o 2, czyli mamy 2, chcemy do
tego dodać 2, to na to jest kilka sposobów.
Możemy napisać, że number 1 równa się number 1 + 2 i zawsze ta prawa strona
najpierw jest ewaluowana, czyli tu zostanie podstawiona dwójka stąd zostanie dodane 2
to zwróci nam 4 i przypiszemy to do tej zmiennej.
Ale wykomentuję to i pokażę Ci jak można to skrócić.
Możemy napisać number 1 + równa się,
tutaj nie może być spacji
pamiętaj, 2.
I to jest dokładnie to samo co wyżej, czyli zmieniamy wartość tej zmiennej o 2.
No i dlatego też ważne jest, żeby taka zmienna przechowywała wartość liczbową,
żeby to mogło się poprawnie odbyć.
Jeżeli chodzi o resztę takich operatorów to ja je wypiszę tutaj w komentarzu.
Bo mamy również minus równa się, mamy następnie razy równa się,
szczerze mówiąc ja chyba nigdy z tego nie korzystałem.
W takiej mojej codziennej pracy nie było to chyba nigdy potrzebne, więc
jest taki operator, ale niekoniecznie będziesz z niego często korzystał.
Mamy dzielone równa się i oczywiście
modulo równa się. Czyli wszystkie z nich robią dokładnie to
samo co tutaj, a więc zmieniają wartość operując na tej samej wartości.
Czyli minus równa się
to będzie tak, jakbyśmy odjęli wartość, którą tutaj podamy razy
równa się to tak jakbyśmy chcieli pomnożyć
to co jest w środku razy jakąś wartość itd.
Czyli np. number 1 razy równa się 2
to znaczy weźmy to, co już tam jest,
pomnożymy to razy 2 i przypiszmy z powrotem do tej zmiennej.
Na sam koniec chcę Ci jeszcze pokazać, że JavaScript zachowuje pewną kolejność
działań, taką jak w matematyce, jak nas uczono w szkole.
Czyli na przykład jeżeli byśmy sobie tutaj utworzyli zmienną rezultat 9 i zrobię
tutaj 2 + 2 razy 4, to najpierw zostanie pomnożone dwa razy 4, a potem dwójka
zostanie do tego dodana, więc taka byłaby kolejność działań.
Natomiast kolejność działań można zmienić za pomocą nawiasów.
Więc zróbmy sobie res 10 i zrobimy tutaj coś takiego jak dwa plus dwa razy 4.
W tym momencie zostanie 2 dodane do 2 i dopiero pomnożone razy 4.
A więc pamiętaj, że kolejność działań można wymusić za pomocą nawiasów. No i że
oczywiście tutaj nie zawsze będziemy wstawiać bezpośrednio liczby.
Tutaj każdą zmienną oczywiście moglibyśmy podstawić jak najbardziej.
To zatem tyle, jeżeli chodzi o operatory arytmetyczne.
Będziemy z nich jeszcze wielokrotnie
korzystać w tym kursie, przynajmniej z części z tych, które tutaj widzisz.