od Podstaw
10 godz. 55 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJeśli poznałeś już wymienione wyżej technologie, to zapewne zdajesz sobie sprawę z ich ograniczeń. Za pomocą języka HTML tworzymy bowiem strukturę dokumentu, dodajemy treść tekstową, obrazy czy wideo. Aby jednak strona internetowa wyglądała perfekcyjnie, korzystamy z arkuszy stylów CSS, które pozwalają nam opisać wygląd wszystkich elementów HTML, ustawić wielkość tekstu czy dodać tło strony. No właśnie, ale gdzie tutaj interakcyjność?Zapewne już wiesz, że język CSS oferuje tzw. pseudoklasy, które pozwalają nam np. przypisać zmianę koloru elementu po najechaniu na niego kursorem myszy. I to tak naprawdę wszystko, na co możemy zareagować. A co gdybyśmy chcieli po wciśnięciu jakiegoś przycisku wysunąć ukryty panel, sprawdzić poprawność wypełnianego właśnie formularza lub pobrać dane z serwera i wyświetlić je na stronie bez przeładowywania witryny? Dobra wiadomość jest taka, że to wszystko jest możliwe z użyciem języka JavaScript, który “rozumie” każda przeglądarka internetowa.Choć język JavaScript powstał jako język skryptowy na potrzeby stron internetowych, to już dawno temu “wyszedł” z przeglądarek internetowych i może być używany tak naprawdę gdziekolwiek. W kursie, który masz przed sobą, poznasz język JavaScript jako niezależny język programowania, a dopiero później dowiesz się, jak wykorzystywać go do wzbogacania stron internetowych. Dzięki postawieniu grubej linii pomiędzy samym językiem, a Obiektowym Modelem Dokumentu dostępnym w przeglądarkach internetowych, będziesz nie tylko bardzo dobrze rozumiał sam język, ale w przyszłości wykorzystasz go do innych zastosowań.Na początku omówimy ciekawą historię języka JavaScript, a chwilę później rozpoczniemy poznawanie najważniejszych jego konstrukcji. I tak dowiesz się czym są zmienne, jakie typy danych dostępne są w tym języku, czym są liczne operatory, instrukcje warunkowe, pętle, tablice, obiekty i funkcje. Wszystkie te zagadnienia są bardzo podobne w innych językach programowania, dlatego kurs ten jest również świetnym wstępem do programowania w ogóle. Każda z przedstawianych konstrukcji języka jest bardzo dokładnie tłumaczona z myślą osobach początkujących. Nie zmienia to jednak faktu, że nawet osoby znające już podstawy języka JavaScript znajdą tutaj coś dla siebie, gdyż na każdym etapie przedstawiane są również liczne ciekawostki odnośnie danej konstrukcji.Kiedy zrozumiesz już jak działa język JavaScript, przejdziemy do drugiej połowy kursu, gdzie dokładnie omówimy Obiektowy Model Dokumentu, dostępny w przeglądarkach internetowych. Zobaczysz jak przeglądarka tworzy z kodu HTML drzewo dokumentu, jak reprezentowane są poszczególne jego węzły, a także jak język JavaScript potrafi z tym “wewnętrznym światem” współpracować. Dowiesz się jak wyszukiwać na stronie interesujących nas elementów HTML, a także jak tworzyć nowe elementy, przypisywać im treść i wstawiać je na stronę. Popracujemy również z atrybutami elementów, ich klasami i wreszcie ze stylami CSS, abyśmy mogli wpływać dynamicznie na wygląd naszej strony.Zobaczysz również, jak możemy w dowolnym momencie odczytać współrzędne położenia elementu na stronie, a także jego wysokość czy szerokość. Tę wiedzę wykorzystamy później w praktycznym przykładzie.Jeden z rozdziałów kursu poświęcony został zdarzeniom, a więc możliwości reagowania na zachowania użytkownika. Dzięki temu zobaczysz, jak możemy przypisać np. zdarzenie kliknięcia do wybranego elementu, a kiedy zostanie on kliknięty, wykona się przygotowany przez nas kod. Poznasz kilka różnych sposobów na przypisywanie oraz usuwanie zdarzeń, a także dowiesz się czym jest tzw. “bubbling” oraz “capturing” czy jak zablokować domyślną akcję przeglądarki.Przy pisaniu jakiegokolwiek kodu, zawsze pojawiają się błędy, dlatego i tutaj Twoje wątpliwości nie pozostaną bez odpowiedzi. Poznasz wszystkie typu błędów, które mogą się pojawić podczas wykonywania naszego kodu, a także wiele sposobów ich wykrycia i wyeliminowania.W kursie nie brakuje oczywiście praktycznych przykładów, które celowo zostały ułożone tak, aby wykorzystać w nich jak najwięcej zdobytej wcześniej wiedzy. Nie zostaniesz więc sam z poczuciem, że co prawda rozumiesz jak działa dana konstrukcja, ale nie masz pomysłu, kiedy z niej skorzystać. Na początek wykonamy praktyczny projekt losowania liczb z wybranego przedziału tak, aby nie mogły się powtórzyć. Już przy tym projekcie poznasz wiele ciekawych technik i sztuczek.Następnie przejdziemy do nieco bardziej zaawansowanego przykładu i napiszemy skrypt, który pozwoli nam sortować dane w tabeli po wybranych kolumnach, kiedy któraś z nich zostanie kliknięta. Zobaczysz jak sortować dane zarówno malejąco jak i rosnąco, a także jak zmieniać kolejność elementów HTML na stronie.W kolejnym projekcie zajmiemy się walidacją danych wpisywanych do formularza, by ten nie mógł zostać wysłany do serwera tak długo, jak zawiera jakiekolwiek błędy. Zobaczysz tutaj zdarzenia związane z polami formularza, a także sposoby na pobieranie z nich wartości i sprawdzanie czy są one poprawne. Zadbamy także o wrażenia użytkownika i wyświetlimy na stronie stosowne błędy, a także podświetlimy źle uzupełnione pola na czerwono.W przedostatnim projekcie wstawimy na stronę przycisk, który będzie się pojawiał po przewinięciu strony w dół, a znikał po odwrotnej akcji. Co jednak ciekawe, po jego kliknięciu, strona zostanie automatycznie, płynnie przewinięta do samej góry.W ostatnim projekcie stworzymy bardzo efektowny dymek z podpowiedzią, który będzie się pojawiał nad elementem po najechaniu na niego kursorem myszy. Wykorzystamy tutaj mnóstwo ciekawych technik. Dowiesz się również jak swój kod przygotować w taki sposób, abyś mógł go udostępnić innym osobom, by w łatwy sposób skorzystały z przygotowanego Tooltipa na swoich stronach.Kurs kończy się sekcją Tips & Tricks, w której znajdziesz 10 krótkich lekcji. W każdej z nich została omówiona jedna sztuczka. Każda z nich pozwoli Ci jeszcze lepiej zrozumieć język JavaScript, ale przede wszystkim zaoszczędzić czas i kilka linijek często niepotrzebnego kodu.Podsumowując, kurs ten jest nie tylko wprowadzeniem do samego języka JavaScript, ale także do Obiektowego Modelu Dokumentu. Dzięki wyraźnemu rozdzieleniu tych dwóch zagadnień, będziesz mógł w przyszłości wykorzystać język JavaScript także do innych zastosowań, poza przeglądarką internetową.
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 czy programowania nie jest wymagana, gdyż wszystkie konstrukcje są starannie tłumaczone. 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, z kursem JavaScript w Praktyce, który powstał jako dopełnienie tego kursu i porusza nieco bardziej zaawansowane tematy, na które tutaj zabrakło już czasu.
Zakończyliśmy już tą część tego kursu, która była poświęcona rdzeniowi języka JavaScript.
Ja już wspominałem, że chciałbym postawić grubą kreskę pomiędzy tym, czym jest sam język JavaScript, a
pomiędzy tym czym jest DOM, o czym powiemy w tej prezentacji, a więc to, co pokazałem ci do tej pory w
tym kursie,
jest to czysty język JavaScript, który możesz przełożyć na pisanie kodu np. w Node.js czy kiedy będziesz
tworzył plugin'y do Photoshop'a.
Nie ma znaczenia. Pokazałem ci jak działa język JavaScript.
Teraz będę chciał omówić jak działa obiektowy model dokumentu w przeglądarce i jak język JavaScript
pomaga nam wchodzić w interakcję z elementami HTML
na naszej stronie
i co dzięki temu możemy robić.
A zatem odpowiedzmy sobie na pytanie, czym jest DOM? DOM,
jest to obiektowy model dokumentu z angielskiego Document Object Model.
I chcę ci teraz pokazać, jak kod HTML, który piszemy przekłada się właśnie na DOM.
Wyobraźmy sobie taką prostą strukturę strony.
Jest to kod HTML, który piszemy, który z serwera został przesłany do przeglądarki.
No i jest to nic innego jak tekst.
Teraz przeglądarka, czyli program komputerowy, który parsuje taki tekst, musi go zamienić na DOM, czyli obiektowy
model dokumentu i dobito tworząc strukturę taką drzewiastą, która wygląda mniej więcej tak.
Czyli mamy Document.
To jest cały nasz dokument.
Następnie, jak widzisz, mamy element HTML, w którym rozgałęziamy i znajduje się w nim element head, w którym znajduje
się element title, a w elemencie title,co jest ważne znajduje się element tekstowy z zawartością
Moja strona, czyli nawet taki tekst jest zamieniany na pewien obiekt, który później będzie reprezentowany
poprzez język JavaScript.
Z drugiej strony mamy body, w body znajduje się div, w div'ie z kolei znajduje się p, czyli paragraf
i znowu treść paragrafu, czyli tekst.
Będzie to obiekt tekstowy.
Jak widzisz, jest to taka struktura drzewiasta, dzięki której możemy mówić o pewnych zależnościach między
elementami np. element body jest rodzicem elementu div, a element div jest dzieckiem elementu body.
Gdybyśmy mieli dwa elementy na jakby równym poziomie, czyli mielibyśmy paragraf w tym div'ie i jeszcze drugi paragraf,
to oba te paragrafy względem siebie byłyby, po prostu, rodzeństwem, czyli z języka angielskiego siblings.
O tym jeszcze będziemy mówić później.
Natomiast na tę chwilę zapamiętaj, że tekst, czyli to co widzimy po lewej stronie czyli kod HTML, jest
zamieniany na taką obiektową reprezentację i każdy element, nawet tekst, ma swój obiekt, z którym będziemy
mogli wchodzić w interakcje poprzez kod JavaScript, ale o tym będę mówić jeszcze później i teraz każdy
z tych elementów, które widzisz po prawej stronie, czyli body, head itd.
jest nazywany Node z języka angielskiego, czyli węzeł.
I teraz chcę Ci pokazać jakie są typy węzłów, czyli Node Types.
Taki węzeł może mieć typ Document, czyli będzie to cały nasz dokument.
Może to być również element i będzie to na przykład div czy paragraf.
Następnie może to być Attribute, bo wiesz że do elementów HTML możemy przypisywać atrybuty, takie jak width, heigth
czy np. class albo id, więc również mamy takie węzły które mają typ atrybut.
Następnie może to być Text, to jest to co mówiłem przed momentem, czyli nawet jeżeli taki tekst znajduje
się w paragrafie, to nie jest to paragraf z tekstem, ale jest to paragraf z dzieckiem, które jest obiektem
reprezentującym tekst i ostatni może to być Comment.
To jest ciekawe, bo na pewno korzystałeś z komentarzy w kodzie HTML, które możemy umieszczać i okazuje
się, że po sparsowaniu całego kodu HTML z tymi komentarzami przeglądarka w obiektowym modelu dokumentu
otworzy nam również specjalne obiekty, czyli komentarze i z nimi można również wchodzić w interakcje.
W kolejnej lekcji przybliżę ci jak JavaScript, jako język różni się od obiektowego modelu dokumentu,
bo uważam, że to w tym kursie jest najważniejsze do zrozumienia, czyli JavaScript to jest to język. Obiektowy
model dokumentu, to zupełnie co innego.
To jest interfejs programistyczny, w którym będziemy mogli z języka JavaScript korzystać i o tym powiem
już w kolejnej lekcji.
Na sam koniec, chciałbym ci jeszcze pokazać, jak to wygląda na żywo, a więc w przeglądarce, czyli jak tekst,
czyli kod HTML jest zamieniane na DOM, czyli obiektowy model dokumentu.
Przejdźmy zatem do przeglądarki i jesteśmy na stronie eduweb.pl
To, co my teraz widzimy jest to wyrenderowana strona, czyli przeglądarka otrzymała kod HTML, który możemy
podejrzeć jako źródło strony.
W taki oto sposób, z serwera został kod przysłany. Jest to nic innego jak tekst i przeglądarka,
jako program komputerowy, potrafi taki tekst sparsować i stworzyć z niego obiektowy model dokumentu, a przy
okazji wszystko nam ładnie wygenerować i teraz,
jaka jest różnica pomiędzy tym tekstem przysłanym tutaj z servera, a obiektowym modelem dokumentu?
Otóż, jak widzisz, mamy tutaj jakiś element np. li,
ma on jakąś klasę itd.
Ale on w taki sposób, czyli taki tekst został przesłany z serwera.
A jeżeli tutaj będą znajdować się odwołania do jakichś skryptów i taki skrypt się wykona i stworzy nowy
element i gdzieś tutaj doda, to tutaj go w źrodłe
strony zobaczymy.
Tutaj jest źródło, jakie został przysłane.
Natomiast jeżeli na stronie klikniemy w przeglądarce Chrome prawym przyciskiem, wybierzemy Zbadaj element
lub też Inspect Element, to przejdziemy tutaj do zakładki Elements i to co tutaj widzisz, jest to drzewo
DOM widziane na żywo.
Mam nadzieję, że jesteś zapoznany już z takim narzędziem, że z niego korzystałeś, bo jest ono bardzo przydatne.
Możemy tutaj zmieniać style CSS.
No i generalnie łatwo tworzyć strony internetowe.
Natomiast to, co tutaj widzisz jest to na żywo reprezentacja tego, co się dzieje w przeglądarce, czyli
tak jak wspomniałem jeżeli jakiś skrypt, tutaj dołączona do tej strony, stworzy nowe elementy HTML i wstrzyknie je
na stronę. Tutaj ich nie widać, ale tutaj je zobaczymy.
Tak samo wszystkie style, które tutaj są przypisane, mogły być tutaj przypisane przez skrypty i nie zobaczymy
tego w źródle strony, ale tutaj już tak. No i jak wspomniałem, jest to obiektowy model dokumentu, więc możemy
tutaj różne rzeczy robić.
Gdybym chciał całe body usunąć, to na stronie zostało to również odzwierciedlone w taki oto sposób.