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.
Teraz pokażę Ci krótko i omówię w jaki
sposób możemy tworzyć nowe elementy z użyciem kodu JavaScript.
W zasadzie po co to robić?
Mamy tutaj nasze drzewo DOM i ono zostało wyrenderowane z takiego oto kodu.
Czyli można powiedzieć, że bez użycia języka JavaScript.
Jeżeli chcemy coś mieć na stronie, musi
się to znaleźć tutaj w kodzie html i przeglądarka to stworzy.
Natomiast z poziomu języka JavaScript
można tworzyć nowe elementy HTML, takie jak np. ten section i wstawiać je na stronę.
O tym wstawianiu powiemy sobie później, natomiast w tej lekcji pokażę Ci, jak
możemy takie elementy tworzyć i z czym to się wiąże.
Jest jedna główna metoda, która w zasadzie Ci wystarczy do tworzenia elementów html.
Jest to metoda createElement na obiekcie dokument.
Więc wyobraźmy sobie, że chcemy utworzyć nowego div nazwę zmienną div, chociaż
oczywiście mam nadzieję, że na tym etapie już wiesz
to jest tylko nazwa stałej,
ona nie ma nic wspólnego z tym, co za moment utworzymy.
Czyli możesz to nazwać jak chcesz np.
element i odwołamy się do obiektu document i on oprócz metod, które już poznałeś takich
jak np. querySelector ma też metodę create element.
Tutaj przekazujemy string
z nazwą tagu. Czyli jeżeli chcemy utworzyć section podamy section.
Jeżeli diva podajemy div czyli string tu
przekazujemy albo literalnie bezpośrednio, albo taki string mógł być oczywiście
zapisany w zmiennej. I taka linijka kodu utworzyła nam nowy element div.
I teraz co się z tym wiąże?
Na tym etapie w zasadzie nic się nie
wydarzy na stronie, bo ten element nigdzie nie jest wstawiony,
ale jak się do niego odwołamy tutaj w konsoli wyświetli nam to w ten sposób.
Ale chcę Ci od razu powiedzieć, że my tak naprawdę mamy utworzony dokładnie taki sam
element, jak moglibyśmy wyszukać z użyciem querySelector. Czyli na przykład jak byśmy sobie tego
section wyszukali, to ja Ci już pokazywałem w poprzednich lekcjach, że będziemy mieli
jakieś właściwości i metody na tych właśnie obiektach.
I dokładnie jest tak samo jak sobie utworzymy taki element.
On też ma dokładnie te same właściwości i dokładnie te same metody.
Jedyna różnica jest taka, że nie znajduje się on jeszcze na stronie w drzewie DOM,
bo musimy go tam wstawić, o czym sobie powiemy w kolejnych lekcjach.
Natomiast to jest dokładnie taki sam
element jak ten, którego możemy wyszukać, czyli taki, który jest zwracany, np.
z querySelector,
to jest taki sam obiekt jak ten, który tworzymy z użyciem createElement.
Jeżeli już się uczyłeś JavaScript albo będziesz przeglądał Internet jeszcze w tym
temacie, możesz się natknąć również na to, że można tworzyć w inny sposób elementy.
Na przykład, jeżeli chcielibyśmy utworzyć nowy element img,
to oczywiście najlepiej jest tutaj wpisać po prostu img i go utworzyć,
ale możesz się spotkać również z tym,
że taki element jest tworzony za pomocą takiego konstruktora new Image. I w
zasadzie to będzie to samo, co jak byśmy tutaj wpisali img.
I teraz kiedy z czegoś takiego korzystać?
Powiem Ci od razu,
nigdy. Nie ma powodu, żebyś korzystał z takich archaicznych zapisów.
One są i działają tylko dlatego, że w
zasadzie od lat 90 tych były zaimplementowane w przeglądarkach i ze
względu na wsteczną kompatybilność cały czas tam są
więc dla niektórych elementów, bo też nie dla wszystkich np.
nie utworzysz sobie dowolnego elementu podstawiając tutaj jego
tag
czyli dla niektórych elementów były takie specjalne konstruktory.
Niemniej jednak nie polecam Ci, żebyś z nich korzystał.
Zapamiętaj sobie metodę createElement i tam przekazuj odpowiedni tag,
będzie to zawsze działać tak, jak tego oczekujesz.
Oprócz elementów HTML mówiłem Ci też, że w drzewie DOM znajdują się tzw.
węzły tekstowe. Czyli jak byśmy sobie tutaj
zetknęli mamy element HTML, w nim kolejny, tutaj kolejny,
ale ten element ma
można powiedzieć dziecko, które jest tekstem.
I czasami zdarza się, chociaż przyznam
szczerze, że dosłownie może kilka razy w życiu z tego korzystałem, że potrzebujesz
utworzyć element tekstowy, który następnie wstawisz do jakiegoś elementu HTML.
Więc bardziej w formie ciekawostki i tego, żebyś wiedział, chcę Ci to pokazać,
utworzymy sobie
taką stałą tekst i odwołamy się do dokument i następnie createTextNode
i tutaj przekazujemy string i będzie to powiedzmy treść.
To sprawi, że do stałej text zostanie zwrócony obiekt, który nie jest elementem
HTML tak jak tutaj div tylko jest właśnie elementem tekstowym.
I jak zobaczysz w kolejnych lekcjach,
kiedy będziemy wstawiać jeden element do drugiego czy elementy na stronę, będziemy
tam mieć taką metodę append child i ona oczekuje, że przekażemy albo element
utworzony w ten sposób, albo element utworzony w ten sposób.
Jeżeli byśmy np. do tej h1 chcieli
wstawić tekst, to właśnie mając odwołanie do h1 powiedzielibyśmy append child i
musielibyśmy przekazać to, co mamy w takiej stałej.
Czyli w ten sposób można tworzyć obiekty,
które reprezentują tekst, a w ten sposób obiekty, które reprezentują elementy HTML.