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.
Kolejną niezbędną w języku programowania grupą operatorów są operatory porównania i
pokażę Ci, jakie z nich są dostępne w języku JavaScript.
Utworzymy sobie na początek taką stałą,
którą nazwę number i przypiszę jej wartość 20.
I teraz będziemy chcieli to, co jest właśnie
w tej stałej porównywać do różnych wartości.
I powiem Ci od razu, że wszystkie operatory, jakie Ci pokażę w tej lekcji
zwracają nam wartość boolean, czyli true lub false.
To jest bardzo istotne.
Jeszcze o tym za moment wspomnę.
I będziemy chcieli sobie może w konsoli przeglądarki na początek wyświetlić
number, czyli możemy się bezpośrednio od tej stałej odwołać,
jest to 20 i pokażę Ci, że mamy taki operator jak operator porównania, taki
podwójny i w ten sposób możemy porównać czy to co przechowuje stała number,
tutaj swoją drogą moglibyśmy również wpisać bezpośrednio jakąś wartość,
czyli tutaj to nie ma żadnego znaczenia co zostanie podstawione.
Czy number jest równe 20?
Zobacz, zostało zwrócone true
i to jest to, o czym wspomniałem, że takie operatory porównania
one zawsze zwracają nam true lub false.
Bo jeżeli bym zapytał, czy number jest równe 21, otrzymam false.
Teraz to co jest ważne w języku JavaScript.
Jeżeli chodzi o taki operator porównania
czy coś jest równe, to mamy dwa znaki równości albo trzy znaki równości.
Gdybym tutaj zapytał czy number jest równy 20, nadal otrzymuje true.
I teraz skąd to się bierze?
Otóż ten pierwszy operator, czyli dwa
znaki równości, nie porównuje nam typów, ale porównuje jakby tylko wartość.
Dlatego jeżeli porównałbym czy number, w
którym wiemy, że jest wartość liczbowa, czy to jest równe
ciągowi znaków o wartości 20 nadal otrzymuje true.
Mimo tego, że tutaj mam wartość tekstową, a w stałej number mam wartość liczbową.
Natomiast gdybym spróbował to porównać w
ten sposób, to otrzymamy false, dlatego, że ten operator, on nazywa się Strict Equality
Operator i on porównuje nam nie tylko jakby wartość, ale i typy.
Generalnie bardzo dobrą zasadą jest, aby nie korzystać z tego operatora takiego
podwójnego, czyli porównywania, gdzie nie sprawdzane są typy, dlatego, że to bardzo
często rodzi wiele problemów później w kodzie, które ciężko znaleźć.
Dlatego zachęcam Cię do tego, abyś korzystał zawsze z takiego operatora
Strict Equality Operator, ale pamiętaj, że taki podwójny również może nam porównywać
jakieś wartości, ale on wtedy nie sprawdza ich typów.
I np. gdybyśmy zapytali czy null jest równa
undefined, on nam niestety też zwróci true.
Natomiast jeżeli porównamy w ten sposób, wtedy dostaniemy false.
Dlatego najlepiej zawsze korzystać z takiego właśnie operatora porównania.
Ja w tej lekcji pokażę Ci tutaj w konsoli właśnie wszystkie te operatory, ale
żebyśmy coś mieli w plikach źródłowych to ja tutaj
na koniec wkleję kod, który będziesz miał
u siebie po to abyś mógł się z tym dokładnie zapoznać.
Dlatego, że nie chcę marnować czasu na
pisanie tego wszystkiego, bo to będą bardzo proste przykłady.
Czyli pierwszym operatorem porównania jest
taki podwójny, drugim jest taki potrójny i polecam Ci właśnie z niego korzystać.
Czasami możemy chcieć zapytać, czy jakieś
wartości nie są równe, a więc czy number nie jest równy 20?
Możemy zapytać w ten sposób, otrzymaliśmy false, bo on jest równy 20, ale jeżeli
byśmy tutaj napisać 21 otrzymujemy true.
I znowu jeżeli zrobimy to w ten sposób, to
nie porównujemy dokładnie typów, ale same wartości.
Podobnie jak w przypadku właśnie tego operatora.
A jak użyjemy dwóch znaków równości, to wtedy porównujemy również typy.
I zachęcam Cię, żebyś zawsze w ten sposób
korzystał z tego operatora, czyli tutaj on zwraca nam true lub false czy dwa operandy,
które podamy, bo w przypadku operatorów mamy operandy.
Pierwszym z nich po lewej stronie jest to co
podstawiliśmy ze stałej number, a drugim jest pisana tutaj literalnie wartość.
Oczywiście tu też może być podstawiona jakaś inna stała czy zmienna
gdybyśmy ją mieli.
Więc polecam Ci, żeby te operandy właśnie porównywać zawsze za pomocą takiego
operatora Strict Equality, w tym przypadku takiego negującego,
gdzie pytamy czy te wartości nie są równe i on nam zwróci true lub false.
Następnie mamy operator większe od.
Czyli jeżeli pod numer mamy 20 możemy zapytać czy 20 jest większe od 100.
Zwróci nam false lub czy jest większa od 15?
Zwróci nam true.
I znowu ten operator, tak samo jak
wszystkie inne, które pokaże, zawsze ewoluuje do true lub false.
Czyli wynikiem takiej operacji w naszym
kodzie zawsze będzie podstawienie true lub false,
zatem można z tego korzystać np.
w instrukcjach warunkowych.
Jak możesz się domyślić, mamy również przeciwny operator, czyli mniejsze od.
Następnie mamy również operator taki jak
mniejsze lub równe, czyli czy 20 jest mniejsze lub równe 20?
True, nie jest mniejsze, ale jest równe, więc wszystko jest ok.
W drugą stronę możemy zapytać czy 20 jest większe lub równe 20?
Też otrzymaliśmy true i zapisujemy to w taki sposób.
OK, i na koniec jak wspomniałem wkleję
tutaj pewien kod, żebyś miał go w plikach źródłowych.
Ja w nim korzystamy z instrukcji
warunkowych, o których jeszcze będzie później, ale zakładam, że masz pojęcie jak
one działają. Więc to pozwoli Ci mieć rozeznanie co się tutaj dzieje.
Dlaczego my tutaj mamy takie podkreślenia?
To z tego powodu, że nasz edytor jakby nam
już pokazuje, że tutaj zawsze będziemy mieli false, a tutaj np.
zawsze będziemy mieli true, bo on analizuje ten kod, który tutaj jest
wpisany, więc tym się specjalnie nie przejmuj.
Niemniej jednak wypisałem tutaj wszystkie
operatory, które przed momentem Ci pokazałem.
A na koniec chcę Ci jeszcze pokazać pewien
trik, pewien taki sposób, jak możemy wykorzystać inaczej niż w instrukcjach
warunkowych taki operator Strict Equality Operator. Utworzę sobie
zmienną number 2 i przypisze jej wartość 6.
I teraz oczywiście zakładamy, że
mielibyśmy taką zmienną czy stałą jakoś dynamicznie pobraną, nie że my tam
wpisaliśmy literalnie wartość i chcielibyśmy sprawdzić, czy liczba, którą może
ktoś wpisał do naszego programu, czy ona jest liczbą parzystą czy też nie.
I w tym celu utworzymy sobie stałą isEven, czyli czy jest parzysta.
I tutaj zrobimy sobie coś takiego Number 2, czyli to 6 modulo 2.
To jest operator z poprzedniej lekcji, a
więc on nam zwraca resztę z dzielenia, a więc 6 dzielone przez 2 zwraca nam 0.
I zawsze jeżeli operator modulo zwróci nam
0, to znaczy, że ta liczba tutaj jest liczbą parzystą.
Ale co ciekawe, gdybyśmy zrobili tylko tak, to całe ewoluuje do 0, więc pod isEven
mielibyśmy 0, a ja chcę tutaj mieć true lub false,
czy ta liczba jest parzysta czy nie.
Więc tu możemy skorzystać z takiego operatora i porównać to do zera.
Skoro ten operator jak wspomniałem, podobnie jak wszystkie inne, zawsze zwraca
true lub false, to całe te wyrażenie zostanie zamienione na true lub false.
Czyli kolejność tutaj wykonywania będzie taka, że najpierw 6 modulo z 2 zostanie
podmienione na 0, następnie czy 0 jest równe 0?
Zgadza się. Więc tu zostanie podstawione true.
A więc takim prostym trikiem możemy sobie sprawdzić, czy w danej stałej mamy jakąś
liczbę, która jest po prostu liczbą parzystą.
No i tutaj jeżeli byśmy to podejrzeli w konsoli przeglądarki isEven
będziemy mieli oczywiście wartość true.