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.
Powiedziałem Ci w lekcji poprzedniej, że w
języku JavaScript wszystko, co nie jest wartością prymitywną, jest obiektem i na
obiektach możemy się odwoływać do ich właściwości i metod
po kropce. Natomiast bardzo często jest
tak, że kiedy słyszysz w kontekście języka JavaScript, że utworzymy obiekt czy że coś
jest obiektem, to chodzi tak naprawdę o tzw.
literał obiektu
i pokażę Ci właśnie jak on działa i na czym polega dokładnie w tej lekcji.
A więc utworzymy sobie taki obiekt, który pozwoli nam zgrupować kilka właściwości.
Pomyśl o obiekcie jak o czymś, co pozwala
Ci jakby kilka zmiennych zawrzeć w jednej strukturze.
Czyli utworzymy sobie stałą person jak osoba i utworzymy tutaj coś takiego.
To jest już poprawny pusty obiekt
w języku JavaScript. Możemy sobie go oczywiście
rozwinąć w ten sposób, żeby to było bardziej czytelne.
I teraz w środku podajemy pary, klucz wartość, oddzielone dwukropkiem.
Czyli jeżeli chciałbym powiedzieć, że ta osoba ma na pierwsze imię, czyli np.
firstName Jan, to zrobimy to w taki oto sposób.
Czyli w środku wpisujemy tak jakby nazwę zmiennej tutaj, a po dwukropku już właśnie
nie po znaku równości jak przy zmiennych czy stałych, ale po dwukropku przypisujemy
wartość. I tutaj przypisałem wartość tekstową.
Jan Ale co ważne tutaj możesz przypisać wszystko co można reprezentować w języku
JavaScript, czyli to mógłbyś przypisać tablicę itd.
Mógłbyś się również odwołać do jakiejś innej zmiennej np.
name, gdyby ona gdzieś u góry była utworzona.
Tak więc nie ma żadnego problemu.
Po prostu tutaj należy podać jakąś wartość.
I teraz jak utworzymy sobie taki obiekt, zaraz do niego jeszcze coś dodamy
to mamy go zauważ pod jedną stałą. Czyli mamy taką stałą jak person.
I jeżeli chcemy się odwołać do firstName to robimy to właśnie po kropce.
Czyli podobnie jak Ci pokazywałem w lekcji poprzedniej, że jak mamy obiekty to po
kropce można odwołać się do ich właściwości.
I tutaj jest podobnie.
Mimo tego, że ten obiekt jakby z samą
tablicą, bo tablica też powiedziałem, że była obiektem nie ma wiele wspólnego.
Jest to tzw. literał obiektu.
Ale jeżeli chodzi o uzyskiwanie jego właściwości, to działa to podobnie.
Czyli mógłbym zrobić console.long
person.firstName i dzięki temu w konsoli wyświetlimy
Jan. Dokładnie tak się stało.
A gdybym chciał zmienić
firstName, to też po kropce się odwołuję i zmieniam to na przykład na Jacek.
W ten sposób, gdybyśmy to jeszcze raz
wyświetli, oczywiście ta wartość będzie zmieniona.
Tutaj w środku, co ważne, możemy sobie
tworzyć klucze, bo to jest klucz, a to jest wartość również jako stringi.
Czyli jeżeli chciałbyś sobie z jakiegoś powodu napisać tutaj
nazwisko jako lastName, tak zrobić nie możesz, bo ten minus byłby traktowany czy
ta pauza jak minus, ale tutaj w środku można to zrobić w taki sposób.
Zauważ.
Czyli podać to jako string i napisać Kowalski.
W ten sposób jak najbardziej również można tworzyć właściwości.
Zazwyczaj robi się to wtedy, kiedy one są
w jakiś sposób dynamiczne, ale można to również zrobić, że tak powiem ręcznie.
Tylko teraz w jakiś sposób musiałbyś się odwoływać do tego
lastName. Gdybyś chciał powiedzieć console.log np.
person.last-name to to będzie błąd,
dlatego, że interpreter języka traktuje tą pauzę jako minus tak jak byśmy chcieli od
person.last objąć name, a nie mamy takiej zmiennej jak name, więc jest to traktowane
jako błąd, bo tutaj czy te spacje by były czy nie to nie ma znaczenia.
Dlatego ten minus tutaj być nie może.
Ale jest drugi sposób uzyskiwania dostępu do właściwości lub metod obiektów.
Jest to taki zapis.
Podobnie jak w przypadku tablic tylko w tablicach podawaliśmy indexy np.
0, 1 itd.
a tutaj musimy podać wartość klucza.
No i jeżeli wiemy, że tutaj przypisaliśmy
last-name to musimy tutaj podać również string last-name.
No i to oczywiście nie jest żadnym błędem
dlatego, że w stringach możemy mieć i spacje i takie minusy itd.
To nam powinno wyświetlić Kowalski. Więc
jak widzisz w ten sposób też się można odwoływać, aczkolwiek dziewięć na dziesięć
razy będzie to wyglądało tak, że jeżeli tu będziesz przekazywał string to Ty go nie
będziesz wpisywał ręcznie, tylko będziesz go miał pod jakąś zmienną np.
property i ona tam po prostu będzie przekazana.
Ale warto wiedzieć, że w ten sposób
również można się odwoływać. Czyli nie tylko po kropce, ale i w ten sposób.
Tutaj jak robiliśmy kropkę, to też moglibyśmy się odwołać.
Tak, ale to oczywiście musiałby być wtedy string.
Czyli firstName zadziałało by to dokładnie tak samo.
Jeśli chodzi o dodawanie nowych
właściwości do takiego obiektu, to oczywiście można to zrobić po czasie.
Mógłbym powiedzieć person.job, czyli np.
zawód programista i jak najbardziej zostanie to dodane, albo
mógłbym to zrobić za pomocą takiego zapisu i też byłoby to dokładnie to samo.
Natomiast jeżeli ręcznie to przypisujemy, to zazwyczaj oczywiście będzie to po
kropce i będziemy się starali robić tutaj np. notację camelCase, czyli taką jak
zrobiłem tutaj bez żadnych minusów, bez żadnych spacji.
No i na koniec pokażę Ci jeszcze, że
możemy usuwać właściwości obiektu, czyli mamy taki operator jak delete.
I napiszemy delete person.firstName i teraz wyświetlimy sobie w konsoli cały person.
Zobaczmy jak to będzie wyglądać.
Zauważ, że możemy go fajnie rozwinąć.
Mamy tam job i lastName, ale nie ma tam
już firstName, bo za pomocą operatora delete usunęliśmy taką właściwość.
Jak zatem widzisz, możemy sobie tworzyć
takie literały obiektów, w którym możemy po prostu pogrupować więcej właściwości.
Bo to będzie ten klucz, to będzie właściwość,
tutaj będzie wartość i bardzo często będziemy z czegoś takiego korzystać.
Jeżeli jesteś na początku swojej drogi z programowaniem i z JavaScript, może na razie
wydawać Ci się to niezbyt przydatne, ale uwierz mi, że później zobaczysz również
praktyczne przykłady, a także z czasem sam będziesz sięgał po taką konstrukcję.