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.
Kolejnymi wartościami, o których sobie powiemy są null i undefined
i zawarłem je w jednej lekcji, bo one są
trochę podobne, ale jednak pojawiają się w innych kontekstach.
Co by było, gdybyśmy sobie utworzyli zmienną firstName i zamiast przypisywać jej tutaj
jakąś wartość, nie przypisali byśmy żadnej wartości?
Jest to jak najbardziej poprawny kod i
czasami po prostu tak robimy, że gdzieś u góry naszego programu inicjujemy sobie
jakieś zmienne, a potem niżej przypisujemy do nich wartość.
Moglibyśmy to zrobić w ten sposób, przypisując tutaj na przykład Jan
i wszystko byłoby ok.
Swoją drogą tego samego nie można zrobić ze stałą, czyli nie można stworzyć stałej,
która nie ma wartości, a następnie spróbować ją przypisać dlatego, że stałe
muszą od razu mieć wartość i tej wartości zmieniać się nie da.
Ale jaką wartość ma zmienna, do której nic nie przypisaliśmy?
Bo zauważ moglibyśmy tutaj przypisać tak zwany pusty ciąg znaków. I teraz ta zmienna
przechowywała by wartość tekstową, czyli string, ale string, który jest pusty.
Jeżeli to byśmy sobie wyświetlił w konsoli,
czyli zapiszę i przejdziemy do przeglądarki i do konsoli.
Tutaj nam się pojawiła taka wolna linijka.
To jest właśnie ten pusty string, który nie ma w sobie żadnego znaku.
Ale jeżeli nic nie przypiszemy do takiej
zmiennej, to pytanie jaką ona przyjmuje wartość?
Spróbujmy ją wypisać w konsoli.
Zauważ, że zwróciło nam to wartość undefined.
Czyli to jest taka wartość niezdefiniowana,
ale to słowo undefined
ono się może pojawić również w naszym
kodzie, szczególnie później przy instrukcjach warunkowych.
Co to oznacza?
Że mógłbym sobie tutaj napisać undefined
i tak naprawdę odwołałem się do takiej jakby globalnej stałej, ona ma taką nazwę
więc my nie powinniśmy też przy okazji
Ci powiem tworzyć zmiennych, którą byśmy nazwali tak samo,
bo są pewne zarezerwowane słowa, z których tutaj nie powinniśmy korzystać,
ale ta wartość może się pojawić po prostu literalnie w naszym kodzie.
Tak jak mówię, później moglibyśmy
porównywać, czy jakaś wartość jest wartością undefined itd.
Nie jest to jednak tak super istotne.
Ważniejsze jest to, żebyś wiedział, że jak mamy utworzoną np. zmienną, która nie ma
żadnej wartości przypisanej, to ma ona wartość undefined,
później to się jeszcze pojawi przy funkcjach,
również o tym wspomnę.
Natomiast drugą wartością, z której możemy
skorzystać jako programiści jest wartość null i też przypisuje się ją w ten sposób
literalnie, dokładnie w ten sposób, więc traktujemy ją jak taką globalną zmienną.
Przypisujemy ją w ten sposób,
no i wtedy gdybyśmy to wypisali w konsoli, to pojawi się tam po prostu null.
Ale po co to null jest i skąd to się bierze?
Otóż pewne operacje,
może wrócimy sobie do takiego zapisu, które możemy wykonywać na przykład w
przeglądarce, ale także w wielu innych miejscach,
potrafią nam zwrócić taki wynik jak null
i będę chciał Ci pokazać jedną z takich operacji,
troszkę wybiegając w przyszłość.
Mianowicie będziemy sobie mogli na stronie
internetowej, w tym drzewie dokumentu, które się tutaj znajduje,
wyszukiwać różnych elementów, z którymi będziemy potem pracować.
I to wszystko będę omawiał w dalszych rozdziałach tego kursu.
I powiedzmy, że chciałbym sobie znaleźć
taki element section i z poziomu języka JavaScript w jakiś sposób nim manipulować.
Ma on klasę Section, więc w przeglądarkach z poziomu języka
JavaScript dostępny jest taki obiekt document,
po kropce można się odwołać do jego metody
querySelector i możemy tam podać selector
taki CSS, który nam wyszuka jakiś element na stronie.
To nam coś zwróci, więc mogę to przechwycić do stałej np.
elem i to sobie na chwilkę wykomentuje a pod spodem
w console.log będę chciał pokazać Ci co zostało znalezione właśnie takim zapisem.
Zobacz.
Pokaże nam się coś takiego i po najechaniu też mi tutaj się podświetla na stronie.
To oznacza, że w jakiś sposób został znaleziony ten element.
Ale co gdybym wyszukał elementu z inną klasą?
Czyli podałbym tutaj element z klasą section-1
powiedzmy. Takiego na stronie w drzewie dokumentu nie mam
i co wtedy zwróci mi querySelector i co zostanie zapisane pod stałą.elem?
Zobaczmy.
Właśnie zostało zapisane null. Czyli null
to jest taka wartość, która może się w różnych kontekstach pojawiać i ona nam
sugeruje, że wszystko zrobiliśmy ok, ale wynik jakiegoś kodu, który wykonaliśmy,
jakiejś funkcji to jest null, czyli po prostu np.
coś nie zostało znalezione.
Natomiast w momencie, kiedy widzimy wartość undefined, to oznacza, że
prawdopodobnie odwołaliśmy się do jakiejś zmiennej, która nie została zainicjowana,
albo przechwyciliśmy wartość jakiejś funkcji, która nic nie zwraca itd.
Na samym początku przygody z JavaScript wiem, że to się wydaje skomplikowane
i jest mi to trudno wytłumaczyć w tym momencie bardzo dobrze, póki jeszcze nie
przeszliśmy do funkcji, do parametrów funkcji itd.
ale chciałbym tylko, żebyś zapamiętał, że undefined reprezentuje wartość nie
zdefiniowaną z jakiegoś powodu, a null jest to wartość,
która została intencjonalnie gdzieś przez jakiegoś programistę zwrócona.
W tym przypadku ona jest zwrócona z
funkcji querySelector, kiedy na stronie czegoś nie znajdziemy.
Ale my jako programiści pisząc później również swoje funkcje,
są sytuacje, w których możemy zwracać jak najbardziej wartości null i ona z kolei sugeruje
innym użytkownikom naszego kodu, że jeżeli jakaś nasza funkcja zwróciła null np.
jakaś funkcja do wyszukiwania w bazie danych powiedzmy, to oznacza, że ktoś
podał frazę zapytania, dla której nie ma żadnych wyników itd.
Czyli jest to intencjonalnie zwrócona wartość.
Natomiast undefined oznacza, że jakaś
zmienna czy jakiś parametr funkcji, o czym później nie została zdefiniowana.