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.
Omówimy teraz jeden z typów danych, jakim
jest tekstowy typ danych, czyli z angielskiego
tak zwany string. Utworzę sobie pierwszą stałą, bo nie
będziemy zmieniać jej wartości, więc nie będę korzystał z let, ale skorzystam z
const i tym razem już będę tworzył po angielsku nazwy tych wszystkich stałych i
zmiennych do końca tego kursu, więc napiszę firstName,
można to zapisać tak,
można oczywiście również tak.
W takiej notacji jest to notacja camelCase
jak widzisz tak ona się nazywa, kiedy
kolejne jakby człony rozpoczynamy od wielkiej litery. I przypisze tutaj wartość Jan.
Coś, co widzieliśmy już w lekcji poprzedniej.
Ale gdzie jest właśnie ten tekstowy typ danych?
Otóż w tym miejscu. Więc między cudzysłowami możemy wpisywać dowolny tekst,
tutaj dowolne znaki się mogą znaleźć, oczywiście również spacje itd.
i jest to tekstowy typ danych.
To jest jeden ze sposobów jak utworzyć zmienną o takim typie.
Teraz utworzymy sobie kolejną stałą,
w tym przypadku również będzie to lastName, czyli nazwisko.
I tym razem skorzystam z takich pojedynczych apostrofów i napiszę tutaj
Kowalski. I teraz mógłbyś zapytać czym różnią się te dwa zapisy?
Bo oba z nich są dozwolone w języku JavaScript.
W praktyce nie różnią się one niczym,
czyli dokładnie tak samo to będzie działać
i jest kwestią Twojej preferencji
tylko czy wolisz zapisywać stringi właśnie
w taki sposób, czy za pomocą pojedynczych apostrofów.
Bardzo często spotyka się
z tym, że programiści używają pojedynczych apostrofów,
ja na przykład osobiście preferuję takie
podwójne w języku JavaScript, a kiedy tworzę w języku PHP,
tworzę je za pomocą pojedynczych, bo tam też można tworzyć na dwa różne sposoby.
Więc jak widzisz, jest to kwestia preferencji.
Wybierz ten sposób, który bardziej Ci odpowiada.
A zatem czy na pewno nie ma żadnych różnic pomiędzy tymi dwoma zapisami?
Teoretycznie nie.
To działa tak samo, ale wyobraźmy sobie sytuację, w której chcielibyśmy utworzyć
taką stałą, gdzie przechowujemy tytuł książki.
Nazwę ją bookTitle i będę chciał tam przechować nazwę Władca Pierścieni.
I teraz chciałbym tutaj również zawrzeć cudzysłowy, bo my je widzimy
ale zobacz, co stanie się, kiedy będę chciał w konsoli wyświetlić bookTitle.
Zobaczmy.
Wyświetli nam się to w taki sposób, czyli dokładnie to, co wpisałem.
Ale co jeżeli chciałbym, żeby ten tekst miał również cudzysłowy?
Powiedzmy, że chcemy ten tekst wydrukować
albo wstawić gdzieś na stronę i normalnie chcę, żeby w nim były cudzysłowy.
Wydawałoby się, że mogę to zapisać w taki
sposób, natomiast nie mogę tego tak zrobić.
Jak widzisz, od razu nam podkreśla, że jest to błąd.
Gdybym zapisał, oczywiście w przeglądarce również zobaczymy błąd i nasz program nie
działa poprawnie. Więc nie można w takich cudzysłowach użyć kolejnych cudzysłowów.
Natomiast jeżeli zapiszemy sobie to w apostrofach,
to wewnątrz nich jak najbardziej możemy już skorzystać z cudzysłowów.
Więc tym to się różni, że po prostu możemy na przemian z tego korzystać.
I teraz w ten sposób za pomocą tego mówimy językowi, że my będziemy tworzyć wartość
tekstową, a wszystko, co wpisaliśmy w środku jest już tą wartością tekstową.
Czyli wtedy ten cudzysłów i ten cudzysłów
nie ma już specjalnego znaczenia, tak jak tutaj.
Jest to po prostu treść tego stringa.
I teraz jak sobie to wyświetlimy, to mamy już tutaj te cudzysłowy.
One są po prostu w wartości tekstowej, którą wpisaliśmy.
No i oczywiście to może zadziałać również w drugą stronę.
Gdybyśmy chcieli skorzystać z apostrofów wewnątrz, to wtedy wszystko oplatamy
cudzysłowami i wtedy to będzie wyglądało następująco.
Bo gdybyśmy tutaj mieli również same apostrofy, tak samo byłby to błąd.
Więc tak możemy to zrobić,
aczkolwiek jest jeszcze inny sposób na to, jak możemy tutaj zawrzeć cudzysłowy.
Ja je jeszcze raz tutaj dodam zobacz,
to tworzy nam błąd, ale możemy je poprzedzić backslashem i
jest to tak zwany znak ucieczki.
Może to dziwnie wygląda, ale kiedy
skorzystamy przed znakiem właśnie z takiego backslasha, to mówimy językowi, że
chcemy od niego uciec, czyli że on nie ma tutaj specjalnego znaczenia.
A więc jeżeli tak rozpoczęliśmy nasz string, to mówimy językowi, że ten kolejny
cudzysłów nie kończy tego stringa, że tutaj w środku nie znajduje się
jakaś wartość, tylko że po prostu chcemy literalnie wstawić tutaj taki oto
cudzysłów i ten drugi również musimy escapeować.
Więc jak tak zapiszemy, zauważ również będziemy mieli tutaj te
wartości poprawnie dodane i te backslashe
one jakby znikają, ale one tylko informują język o tym, że ten kolejny znak to po prostu
jest znak, który chcemy literalnie tam wpisać.
Wtedy możemy to opleść właśnie w taki sposób.
I mamy jeszcze trzeci sposób na tworzenie
stringów, czyli wartości tekstowych w języku JavaScript.
On jest najnowszy, dostępny od ES6 i ma kilka zalet.
Więc spróbujmy sobie napisać coś takiego jak multiline.
Czyli chciałbym stworzyć tekst, który
będzie rozciągnięty na kilka linii. Więc napiszę multiline,
to jest tylko nazwa zmiennej, w tym przypadku stałej,
pamiętaj, gdybym skorzystał z takich
zwykłych cudzysłowów albo apostrofów, to nie mogę sobie tutaj zrobić tego w ten
sposób, że wpiszę linijka pierwsza, wcisnę enter, następnie linijka druga itd.
To od razu nam pokazuje, że generuje błąd.
Musiałbym tutaj skorzystać z takiego specjalnego znaku.
Czyli znowu robiłem backslash i n,
i to jest taki specjalny znak, który mówi
nam, że w tym miejscu wstawiliśmy nową linię.
I teraz jeżeli zrobimy sobie console.log(multiline), zapisze to, to zauważ, że
wyświetli nam się to w dwóch linijkach.
Natomiast możemy skorzystać z takiego specjalnego tzw.
template stringu, który pozwoli nam
normalnie wcisnąć enter tam gdzie chcemy zrobić sobie nową linię,
więc utwórzmy sobie kolejną stałą, którą nazwę multiline 2 i tu ją wyświetlimy,
natomiast usunę ze środka ten zapis
i zamiast cudzysłowów skorzystamy z takich backticków.
Czyli to jest trzeci sposób na tworzenie stringów.
Jeżeli zrobię to w ten sposób, będzie to działać tak samo jak wcześniej, ale przy
tych backtickach można normalnie sobie wcisnąć enter i wszystkie tzw.
białe znaki, które będą wewnątrz będą tutaj brane pod uwagę.
Czyli jak zapiszę coś takiego i w konsoli spróbujemy wyświetlić,
zauważ, że mamy linijka pierwsza,
potem mamy pustą linię i linijka druga,
czyli wszystkie te białe znaki zostały tutaj wzięte pod uwagę.
Zatem jeżeli chcesz utworzyć jakiś string,
który będzie miał wiele linii, bo tutaj go tworzymy i powiedzmy później będziesz
chciał go wstawić na stronę o czym jeszcze będziemy w tym kursie mówić, to możesz
skorzystać właśnie z takiego zapisu, czyli z takiego template stringu.
Na koniec pokażę Ci jeszcze jaka jest zaleta tych template stringów
nad tworzeniem stringów z użyciem cudzysłowów i apostrofów.
Otóż możemy tutaj interpolować wartości różnych zmiennych.
Czyli moglibyśmy tutaj utworzyć string, w
którym napiszemy tytuł książki to i chcielibyśmy tutaj wstawić to co
przechowuje zmienna bookTitle czyli Władca Pierścieni.
I możemy w takim template stringu ale tylko właśnie w takim stringu
skorzystać z dolara, następnie z pary takich nawiasów klamrowych i wprowadzić
tutaj dowolne wyrażenie JavaScript w tym przypadku odwołanie się do zmiennej.
Więc mogę napisać bookTitle
i to utworzy nam string, w którym będziemy mieli tytuł książki to,
a tu zostanie wstawiona wartość Władca Pierścieni i cała taka wartość zostanie
zapisana tutaj w multiline 2, które następnie wyświetlimy w konsoli.
I zobacz. Mamy tytuł książki to Władca Pierścieni.
Zatem podsumowując w języku JavaScript
można tworzyć stringi na trzy sposoby albo za pomocą cudzysłowów, albo apostrofów
i to w zasadzie działa dokładnie tak samo,
z tym, że tak jak tutaj widziałeś jeżeli utworzymy za pomocą apostrofów, to wewnątrz
możemy korzystać z cudzysłowów i na odwrót.
Natomiast trzeci sposób jest to tworzenie tzw.
template stringa, który po pierwsze
honoruje białe znaki, a więc możemy wewnątrz zrobić sobie odstępy itd.
a po drugie pozwala nam np.
interpolować zmienne, czyli wstawiać
tutaj za pomocą dolara i takich nawiasów jakieś wyrażenie JavaScript, które będzie
przetworzone i jego jakby wynik zostanie tutaj podstawiony
literalnie i zapisany w tym przypadku w stałej.