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 poprzedniej lekcji wspomniałem, że w obiekcie możemy przechowywać dosłownie
wszystko, co jest reprezentowane z udziałem języka JavaScript.
Więc w tej lekcji pokażę Ci, że wewnątrz obiektu można zawrzeć również funkcję.
I wtedy o takiej funkcji mówimy, że jest ona metodą obiektu.
Więc tak jak mieliśmy tablice i odwołaliśmy się tam do push,
powiedzmy, że mieliśmy jakąś tablicę w ten
sposób zrobioną i robiliśmy arr.push to była to metoda tego obiektu arr.
Chociaż tablica jest troszeczkę innym, takim
wyspecjalizowanym obiektem, niemniej jednak my do takich zwykłych naszych obiektów
również możemy dodawać najróżniejsze metody.
Więc utwórzmy sobie obiekt person
tak jak w lekcji poprzedniej.
Napiszemy firstName, czyli pierwsze imię
będzie to Jan, lastName, czyli nazwisko będzie to Kowalski.
I teraz mamy tutaj w tym obiekcie dwie właściwości. Czyli firstName i lastName.
Są to po prostu właściwości, natomiast teraz będziemy chcieli dodać metody.
Chciałbym dodać metodę, która nazywa się sayHello. I zrobimy to tak.
Oczywiście podajemy klucz sayHello
i tutaj należy przypisać funkcję.
W języku JavaScript funkcje można tworzyć na różne sposoby.
Można tutaj przypisać po prostu taką funkcję
i tutaj z niej coś zwrócić albo w niej wykonać jakiś kod, albo od standardu ES6
można skorzystać ze skróconego zapisu i zrobić to tak.
I w ten sposób utworzymy wewnątrz tego obiektu funkcję.
I chciałbym, żeby ta funkcja robiła coś takiego.
W takim template stringu sobie to wyświetlimy.
Powiemy Cześć, mam na imię
i tutaj chciałbym wstawić Jan.
Teraz jak się możemy do tego odwołać?
Otóż wewnątrz takiej funkcji, która jest
zawarta w obiekcie mamy dostęp do takiego specjalnego słowa kluczowego this.
Pomyśl sobie, że jest to jakaś zmienna,
która przechowuje nam odwołanie do całego tego obiektu.
Więc jeżeli mając odwołanie do tego obiektu np.
tutaj pod person możemy powiedzieć person.firstName,
to wyobraź sobie, że właśnie tutaj wewnątrz pod this jest cały ten
obiekt, a więc możemy powiedzieć this.firstName i zwróci nam to taką wartość.
A zatem za pomocą template stringu, który tutaj stworzyłem możemy sobie
zinterpolować tę wartość i powiedzieć tutaj właśnie w ten sposób this.firstName.
To sprawi, że zostanie utworzony taki string, gdzie będzie
cześć, mam na imię Jan. I będzie to dynamiczne, o czym jeszcze za moment.
Zatem jeżeli sobie teraz przejdziemy tutaj i wywołamy person.sayHello,
czyli odwołałem się do tej metody i teraz za pomocą nawiasów
okrągłych ją wywołuję jak funkcję, to powinniśmy w konsoli zobaczyć
Cześć, Mam na imię Jan.
Zobaczmy, dokładnie tak też się stało.
Teraz możemy sobie tutaj dodać jeszcze jakąś inną metodę, np.
setFirstName, która pozwoli nam zmodyfikować tę wartość.
Ona będzie przyjmować parametr firstName albo możemy tutaj powiedzieć newName,
żeby to nie było zbyt dla Ciebie mylące,
że to się nazywa tak samo, bo nie musi się tak nazywać.
I skoro w tej funkcji też mamy odwołanie do this i to kieruje na cały ten obiekt,
skoro Ci mówiłem, że mogę napisać person.firstName
i przypisać tu nową wartość, to tak samo mogę zrobić tutaj pod this.
this.firstName równa się newName, które ktoś przekaże,
i teraz zrobimy to sayHello,
potem się odwołamy do person.setFirstName,
ustawimy nowe imię na Jacek
ono się wewnątrz tego obiektu zmieni, więc
jeśli byśmy się tutaj odwołali do firstName tam już będzie Jacek,
ale odwołajmy się znowu do sayHello, aby jeszcze raz zobaczyć wynik właśnie tej
funkcji i pokazać Ci, że ona jest dynamiczna i za każdym wywołaniem tutaj
pod this.firstName ona będzie sprawdzać jaka jest wartość właśnie tej właściwości, a
nie taka jak była na początku. Czyli jak ją w międzyczasie po prostu zmienimy,
to jak najbardziej ona będzie brana pod uwagę przy kolejnych wywołaniach.
Zobacz. Cześć, Mam na imię Jan, a potem cześć,
Mam na imię Jacek.
Oczywiście nie musielibyśmy za pomocą
takiej metody zmieniać tego firstName, działałby identycznie gdybyś tutaj napisał
firstName równa się Jacek, ale chciałem Ci po prostu pokazać, że
możemy sobie tworzyć funkcje wewnątrz obiektu i że nazywamy je wtedy metodami, a
także, że mają one dostęp do takiego specjalnego słowa this, które kieruje na
cały ten obiekt, a więc pod this.setFirstName mielibyśmy tę metodę,
pod this.firstName mamy Jan itd.