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 tej lekcji powiemy o tym, czym jest
JSON i jak z nim pracować w języku JavaScript.
JSON jest to skrót od JavaScript Object Notation
i jest to taki tekstowy format wymiany
danych, który łudząco przypomina obiekty JavaScript.
Zanim przejdę dalej, to utworzymy sobie jakiś obiekt i zaraz do niego się
porównamy i powiemy czym JSON jest. Więc utworzę taki obiekt
jak już wielokrotnie w tym kursie widzieliśmy, taki standardowy.
Czyli mamy tutaj jakieś wartości typu string.
Chciałbym żebyśmy mieli też wartość typu number czyli np.
Age 30 i dodamy sobie jeszcze
hobbies, czyli powiemy, że są to hobby tego właśnie pana,
dodajmy sobie IT,
czyli jest to po prostu tablica ze stringami,
następnie sport i powiedzmy podróżowanie.
I teraz utworzyliśmy JavaScript obiekt.
Natomiast gdybyśmy ten obiekt troszeczkę zmodyfikowali, czyli zrobili coś takiego,
że tutaj bym podał to jako takie wartości stringowe
i ja Ci pokazywałem już w tym kursie, że
możemy w JavaScript w ten sposób to zapisać, ale nie musimy.
Jeżeli bym zrobił coś takiego
to okazuje się, że teraz to co zaznaczę jest poprawnym JSON czyli JSON
to jest format, który wygląda właśnie tak,
że może tutaj być obiekt, w którym są jakieś dane,
natomiast taka pojedyncza tablica też byłaby poprawnym JSON.
Samo null też byłoby poprawnym JSON, 0 czy np.
10 również czy pojedynczy string.
Ale zazwyczaj JSON to będzie jakaś tablica z takimi obiektami albo
bezpośrednio taki obiekt i jakieś właściwości.
I teraz co to znaczy, że to jest JSON?
Jeżeli to zapiszemy oczywiście odświeży się strona,
to dla nas jest to JavaScript obiekt.
Czyli to na razie nie jest JSON, ale jak JSON wygląda.
Natomiast co jest JSON? JSON jest tekst.
Czyli to co tutaj widzimy
dla nas jest to tekstem jako tekst
źródłowy, ale z punktu widzenia JavaScriptu oczywiście jest to obiekt, ale
gdybyśmy sobie dokładnie to skopiowali i napisali byśmy coś takiego jak np.
data i stworzę Template String, czyli
wiemy, że to co będzie wewnątrz jest tekstem, jest stringiem.
Jeżeli tutaj zapiszę coś takiego wygląda niemal identycznie,
natomiast to jest właśnie JSON. Czyli JSON
jest to jakiś tekst, który reprezentuje dane i jest zapisane w odpowiednim formacie.
Czyli gdybyśmy sobie tutaj zerknęli
zauważ, że ja wcześniej tutaj utworzyłem plik person.json
On wygląda właśnie w taki sposób i to co tutaj wpisałem wygląda jak obiekt
JavaScript, ale jest w pliku z rozszerzeniem JSON,
no i jest to właśnie poprawny format JSON.
Więc co w tym formacie jest istotne i czym
on się różni od takiego obiektu JavaScript -owego?
Otóż różni się tym, że jego właściwości zawsze muszą być w cudzysłowach.
Nie można tak zapisać jak w przypadku obiektu JavaScript owego.
Nie można też pojedynczych.
Zawsze musi to tak wyglądać.
I wartości jakie możemy tutaj
reprezentować to będzie string, to będzie number lub np.
tablica.
Natomiast nie można tutaj zapisać jakiejś funkcji itd.
A więc funkcja nie może być
zapisana w JSON, a co za tym idzie jak ten JSON za chwilę Ci pokażę
zamienimy na obiekt JavaScript, to tej funkcji byśmy tam mieć nie mogli.
Czyli tylko takie wartości jak tutaj widzisz.
Tu jeszcze może być oczywiście przechowywane np.
true lub false i null. Więc tak to wygląda.
To jest plik JSONowy
I dlaczego o tym mówię?
Dlatego, że z punktu widzenia właśnie
programistów JavaScript to wygląda jak obiekt JavaScript,
natomiast jeżeli ktoś programuje w innym
języku takim jak PHP, to ten JSON nic mu nie przypomina, ale
również w języku PHP z takim JSON pracować można.
No i teraz chcę Ci pokazać co można zrobić z
takim JSON, zakładając, że jest to ciąg znaków, czyli string.
Teraz nie jest to już obiekt.
Taki JSON możemy sobie albo odczytać z pliku, albo co jest dużo częściej
wykorzystywane i tym się zajmiemy w kolejnych lekcjach
pobrać sobie dane w formacie JSON z serwera.
My wtedy z serwera otrzymamy jakby do
naszego języka JavaScript, do tej części JavaScript w przeglądarce
otrzymamy po prostu tekst, czyli dokładnie taki jak tutaj tekst.
Z punktu widzenia języka JavaScript pod data nie ma żadnych danych,
to jest tylko tekst. Ale taki tekst możemy zamienić na obiekt
taki jak tutaj widzimy. I do tego służą w języku JavaScript dwie
metody. Jedna do zamiany w jedną stronę, druga w drugą.
Czyli mógłbym zrobić to od razu np.
w konsoli. Odwołać się do JSON pisane wielkimi literami.
To jest dostępne w języku JavaScript i następnie parse.
Do tej metody musimy przekazać string,
czyli właśnie tekst, który reprezentuje dane w formacie JSON.
A więc zróbmy to, przekażemy tutaj data i zobacz co się wyświetli w konsoli.
Otóż wyświetlił się już tym razem
prawdziwy obiekt, a to oznacza, że z takiego tekstu za pomocą JSON.parse
możemy zrobić prawdziwy obiekt, identyczny jak ten u góry
i gdybym sobie go zapisał np.
tutaj w zmiennej napiszmy parsed, coś takiego.
I tutaj sobie to podstawimy
żeby wiedzieć o co chodzi, to mógłbym na tym parsed odwołać się do poszczególnych
właściwości, które tutaj widzimy w firstName, lastName, age itd.
I np.
to będzie zamienione na tablicę poprawnie i tak dalej.
Jeżeli tu by się znajdowała jakaś funkcja,
tak jak wspominałem, to nie byłby to już poprawny JSON.
Nie dałoby się tego sparsować. Więc JSON wygląda
niemal identycznie jak taki obiekt JavaScript
ale ważne jest to, że z punktu widzenia języka JSON to jest po prostu tekst,
który za pomocą metody JSON.parsed można zamienić na prawdziwy obiekt.
I teraz można zrobić to również w drugą stronę.
Gdybyśmy chcieli taki obiekt jak tutaj mamy np.
person zamienić na właśnie taki tekst po to, aby na przykład wysłać go do serwera,
to zrobimy to metodą i zrobimy też console.logu
JSON.stringify.
Wygląda ona tak i podajemy tutaj obiekt
tym razem. Możesz podać tablicę, możesz podać liczbę,
wszystko to co na JSON da się zamienić tak jak już wcześniej Ci powiedziałem.
Więc podamy sobie ten obiekt person i w konsoli przeglądarki zobaczymy ciąg znaków.
To jest zwykły string i taki string można np.
Ajaxem, o czym w kolejnych lekcjach przesłać do serwera,
serwer potrafi go wtedy odczytać w zupełnie innym języku.
To może być powiedzmy język PHP czy np.
Java albo ASP.NET
potrafi to odczytać, zamienić na swój własny obiekt, bo np.
w PHP takie obiekty nazywane też tablicami
asocjacyjnymi wyglądają troszeczkę inaczej i może z tym pracować.
A więc jest to format wymiany danych.
My możemy z serwera otrzymać taki ciąg,
potrafimy go zamienić na obiekt, dzięki czemu możemy z nim pracować, ale również
możemy wysłać taki JSON do serwera najpierw tworząc sobie obiekt, ustawiając
wszystkie jego właściwości i następnie robiąc stringify i wysyłając go do serwera.
Serwer u siebie też zrobi sobie parsed z użyciem dowolnego języka jaki pracuje na
serwerze i też będzie mógł na takim obiekcie pracować.
Jeżeli natomiast dla podglądu chciałbyś żeby to wyglądało ładniej to do metody
stringify można podać jako drugi parametr taką specjalną funkcję, która
pozwala nam niektóre rzeczy inaczej sformatować, coś porzucić, coś wyrzucić,
nie będziemy się tym zajmować, więc podamy null, ale jako trzeci parametr możemy
podać number ile spacji wcięcia chcemy zrobić.
Jeżeli to zrobię w ten sposób, to tutaj
będą cztery spacje, wcięcia i będzie to po prostu ładniej wyglądać
jeżeli chcielibyśmy podejrzeć. Natomiast
zapamiętaj stringify stworzyło nam tekst, który można powiedzieć, że nie ma
żadnego znaczenia, ale w odpowiednim języku programowania przepuszczony przez
odpowiednią funkcję tworzy prawdziwy obiekt.
W JavaScripcie taki tekst przepuszczony
przez JSON.parse tworzy nam obiekt, na którym możemy pracować.
No i w kolejnych lekcjach pokażę Ci, jak
możemy z serwera pobrać sobie taki JSON, czyli taki tekst,
zamienić go odpowiednio na obiekt, no i np. wyświetlić na stronie.