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.
Skoro wiesz już jak dodawać elementy do
tablicy, to teraz będziemy z tej tablicy chcieli jakieś elementy usunąć. Więc
zróbmy sobie tablicę gdzie będzie kilka wartości tekstowych,
ale to usuwanie oczywiście działa tak samo
bez względu na to, co jest przechowywane w tablicy
i może dodajmy sobie tutaj jeszcze Mariusz, ok.
I mamy teraz taką tablicę znowu pod stałą arr jak array
i jej długość to będzie 4.
I teraz jest kilka sposobów na to, jak usuwać elementy z tablicy.
Jeżeli chcielibyśmy wyczyścić całą
tablicę, czyli usunąć z niej wszystkie elementy, to możemy to zrobić.
Oczywiście nie możemy nadpisać tej stałej nową, pustą tablicą.
Tak by było wydaje się najprościej, ale możemy się
odwołać do właściwości length, która nam odczytuje ile jest elementów w tablicy.
Widziałeś, że ona zwraca,
w tym przypadku zwróciłaby 4, ale możemy również do niej przypisywać wartość.
I jeżeli tu byśmy powiedzieli 0, to to
sprawiłoby, że ta tablica, jeśli ją wyświetlimy, będzie po prostu pusta.
Natomiast to jest może dobry przykład
tylko wtedy, kiedy chcemy wyzerować z jakiegoś powodu tablicę, ale w żadnym
innym wypadku raczej nie ustawia tutaj innych wartości.
Bo jeżeli ustawisz 10, zauważ co się stanie.
Będziemy mieli tablicę, która ma kilka
elementów i tutaj Chrome DevTools pokazuje nam, że mamy 6 jeszcze pustych elementów.
Chodzi o to, że gdybyśmy się teraz do nich
chcieli odwołać, one będą miały wartość undefined.
Więc tutaj można sobie też namieszać przez to,
więc jeżeli kiedykolwiek będziesz używał
przypisania do arr.length, to tylko w sytuacji kiedy chcesz taką tablicę wyczyścić.
Możemy za to korzystać z metod. Tak jak
mieliśmy metody do dodawania elementów do tablicy na początku i na końcu,
mamy też metody do usuwania tych elementów na różny sposób, więc może to wykomentuje.
I teraz co będę chciał zrobić?
Będę chciał usunąć ostatni element tablicy i można to zrobić za pomocą arr.pop.
To modyfikuje tablica, na której to wykonaliśmy i zwraca ten element.
Co to oznacza?
Że usuniemy Mariusza,
zobacz już tego elementu tutaj nie ma, ale
gdybyśmy chcieli coś z tym elementem zrobić i przechwycić sobie go gdzieś, to moglibyśmy
przypisać to do jakiejś stałej lub zmiennej np.
tutaj last
czyli chcę mieć pod stałą last
ostatni element jaki był w tej tablicy, a
więc arr.pop usunie go z tablicy i go zwróci.
Czyli podstawi mi tutaj po prostu Mariusz.
Jeżeli teraz zrobię console.log last to będę miał tam po prostu ciąg
Mariusz. Dokładnie on został wyciągnięty z tej tablicy i przypisany do tej stałej.
Natomiast jeżeli tylko chciałbym usunąć,
ale nie potrzebuję tego elementu to zrobiłbym to w taki sposób.
Wtedy całe to wyrażenie usunie ten element i oczywiście jakby go tutaj zwróci,
Mariusz, coś takiego by się stało i to po prostu
będzie zignorowane, bo nic z tą wartością nie zrobiliśmy.
Ok, może sobie to po prostu zostawmy tak i zapiszemy do stałej. Odwrotnością
czyli gdybyśmy chcieli usunąć pierwszy
element tablicy i wszystkie przesunąć wtedy jakby w lewo
i też możemy go przechwycić
jest metoda, która nazywa się Shift. Więc moglibyśmy tutaj powiedzieć first,
czyli pierwszy element to arr.shift,
jeśli wywołamy tę metodę parą takich
nawiasów okrągłych, to usuniemy Tomka i zwrócimy go tutaj do tej stałej first.
Nie jest nam on do niczego potrzebny, ale zauważ, że w ten sposób rzeczywiście
usunęliśmy i pierwszy i ostatni element tablicy.
Często jednak będziemy chcieli usuwać jeden konkretny element tablicy i to się
przyda już później, w jakiś bardziej rozbudowanych przykładach.
Powiedzmy będziemy do tablicy wkładać jakieś różne elementy, np.
będziemy mieli powiedzmy listę jakiś wpisów,
wyobraź sobie, że masz wpisy na jakiegoś bloga w takim formacie JSON,
jeżeli nie wiesz jak ten format działa, to jeszcze o nim będziemy mówić później.
Ale mamy jakieś wpisy i te wpisy znajdują się w tablicy.
Może być tak, że mamy wyświetlaną tabelkę
z tymi wpisami albo z czymkolwiek innym i po kliknięciu na stronie na jakiś
przycisk będziemy chcieli dany element usunąć.
Wtedy będziemy musieli sobie odczytać, który to jest element np.
piąty element tablicy i będziemy z tej tablicy chcieli go po prostu usunąć.
Czyli taka sytuacja, w której chcemy konkretnie usunąć np.
Jacka, również może się znaleźć i to
będziemy robić za pomocą metody, która nazywa się splice.
Więc jeżeli Jacek jest pod indeksem drugim, bo indeksujemy od zera 0, 1, 2,
to metodą splice możemy zrobić coś takiego arr.splice
i mówimy, od którego indeksu chcemy zacząć usuwanie.
Jacek jest pod indeksem drugim, więc
podajemy dwójkę i ile elementów chcemy usunąć.
Jeżeli chciałbym usunąć Jacka i Mariusza wpisał bym 2.
Jeżeli chcę usunąć tylko Jacka wpisze 1.
OK, zobaczmy.
Odświeżamy.
I jak widzisz to nie zadziałało, ale to
właśnie dlatego, że wcześniej przecież zmodyfikowaliśmy tę tablicę, więc Jacek
już nie jest na miejscu drugim, tak jak wspomniałem, więc wykomentuję te dwie
linijki, żeby nam tej tablicy nie zmieniało
i teraz powinniśmy zobaczyć, ok, jeszcze zobaczymy błąd, bo tutaj się zobacz
odwołaliśmy się do stałej, której nie ma,
ja ją wykomentowałem, ok, jeszcze raz i teraz zobaczymy, że Jacek rzeczywiście zniknął.
Czyli metoda splice pozwala nam usunąć konkretny element podając jego indeks.
Gdybyśmy nie wiedzieli pod jakim indeksem
jest Jacek, to możemy z kolei skorzystać z metody indexOf.
Może to na moment wykomentuje i pokażę Ci jak ona działa.
Może w przeglądarce. Odwołamy się do tego
arr i jak jej podamy indexOf, to jest taka metoda
i zapytamy pod jakim indeksem jest Jacek to zwróci nam dwójkę czyli 0, 1, 2.
To nam zwraca number, typ number.
Więc jeżeli takie wywołanie zwróci nam dwójkę to możemy tą dwójkę sobie podstawić do
metody splice. Czyli zamiast tutaj wpisywać dwójkę
bo ja widzę wizualnie gdzie ten Jacek jest
to oczywiście jak będziemy tworzyć programy to będzie to wszystko musiało być
dynamiczne, a więc można się odwołać do arr.indexOf i tutaj podamy po prostu
Jacek Czyli najpierw zostanie to wyrażenie tutaj
wyliczone, to nam podstawi dwójkę, no i zadzieje się dokładnie to samo, co stało
się przed momentem, a więc Jacek zostanie usunięty z tablicy.
Co ważne, ta metoda splice również zwraca
usuwane elementy, więc jeżeli chciałbym tutaj przechwycić i nazwać sobie stałą np.
removed, czyli to co usunęliśmy i wyświetlić w konsoli, zobacz,
to dostaniemy tablicę.
Czyli to jest tak, że usuwamy ten element
z tablicy i ta metoda zwraca nam nową tablicę z tym jednym elementem.
Bo gdybym usunął tutaj dwa elementy, a nie tylko Jacka, czyli Jacka i Mariusza,
to dostałbym tablicę, gdzie będzie i Jacek i Mariusz.
Więc czasami jest tak, że chcemy usunąć
element z tablicy i sobie również go przechwycić,
można to zrobić, a czasami jest tak, że po
prostu chcemy go usunąć i nie jest nam ta wartość do niczego potrzebna,
wtedy nie będziemy tego przechwytywać do żadnej zmiennej czy stałej.