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.
W tej lekcji, chciałbym Ci pokazać, w jaki sposób na stronach internetowych możemy umieszczać skrypty
JavaScript i są na to dwa sposoby.
Zaczniemy od jednego z nich.
Chcę Ci powiedzieć najpierw, że możemy umieszczać skrypty JavaScript zarówno w elemencie head, czyli tak
jak tutaj, jak i w elemencie body, w dowolnym miejscu, a więc jeżeli przeglądarka będzie wczytywała sobie
taki kod i napotka skrypt JavaScript, to ten skrypt od razu zostanie wykonany, a więc w elemencie head
możemy takie skrypty umieszczać i możemy to zrobić na jeden z tych dwóch sposobów.
Będzie to umieszczenie tutaj elementu script, w taki oto sposób i to, co wpiszemy pomiędzy tym właśnie
otwierającym tagiem script, a tagiem zamykającym będzie to kod JavaScript.
Teraz tutaj ważna uwaga.
Być może zauważyłeś tutaj u góry, że mam nagłówek HTML5, czyli DOCTYPE HTML.
Jest to strona w języku HTML5.
Wówczas wystarczy, że zapiszemy to w ten sposób.
Natomiast gdybyś miał inny nagłówek np. XHTML, to musimy tutaj dodać jeszcze atrybut type i robimy
to w ten sposób, type równa się. Jeśli chodzi o JavaScript,
powinniśmy tutaj napisać tekst, ukośnik, javascript.
Wówczas przeglądarka wie, że kod zawarty tutaj pomiędzy tymi znacznikami, jest kodem JavaScript. W HTML5 możemy
to pomijać. Gdybyśmy tutaj napisali coś innego, np. w ten sposób, dowolną taką nazwę czyli text, ukośnik x,
to co jest pomiędzy tymi dwoma elementami, nie zostałoby w ogóle zinterpretowane.
Więc o tym warto pamiętać.
Skoro my tutaj mamy nagłówek HTML5, to możemy od razu tutaj wpisać nasz kod i wpiszemy sobie tutaj instrukcję
alert,
jest to funkcja, jeszcze nie będę mówił w tym kursie, więc na razie się nie przejmuj, co tutaj się dzieje
natomiast będę chciał napisać - Witaj świecie, co zawsze robimy na początku.
Będę chciał to zapisać.
Teraz chciałbym podejrzeć ten plik w przeglądarce internetowej i zobaczymy co się stanie.
Jak widzisz, okienko Alert
i tutaj Witaj świecie zostało nam wyświetlone, a więc ten skrypt został poprawnie zinterpretowane.
To jest jeden sposób na wstawianie skryptów.
Natomiast teraz pokażę ci drugi, który jest częściej wykorzystywany. To możemy usunąć i drugim ze sposobów
jest podobnie, jak w przypadku styli CSS podlinkowanie tutaj zewnętrznego pliku.
Być może zauważyłeś w sidebarze, że mam katalog js
i jest to dobra praktyka, aby te skrypty trzymać w osobnym katalogu i wewnątrz plik
script.js
script.js
Jego nazwa nie ma absolutnie żadnego znaczenia.
Natomiast pliki JavaScript musisz kończyć
rozszerzeniem js.
I taki plik będziemy chcieli sobie tutaj podlinkować.
Znowu skorzystamy z elementu script natomiast tym razem damy mu atrybut src i musimy podać ścieżkę
do tego pliku.
Jest on w katalogu js, więc napiszę js ukośnik scripts.js.
W ten sposób i jak widzisz, ten element zamykający również tutaj jest obowiązkowy,
aby to wszystko mogło działać. Zapiszę,
teraz przejdźmy do tego pliku i również wpiszę tutaj instrukcję alert.
I teraz znowu przejdziemy na stronę, odświeżę i ponownie ten sam kod został dla nas wykonany.
Teraz chciałbym ci jeszcze pokazać jedną rzecz, mianowicie fakt, czym różni się umieszczanie skryptów
w elemencie head, od umieszczania tychże skryptów w innych miejscach.
Od razu powiem ci, że dobrą praktyką jest nie umieszczanie skryptów w tym właśnie elemencie head.
Dlaczego?
Pokażę ci teraz gdybyśmy ten adres skopiowali i w nowej karcie spróbowałbym go wkleić. Wciskam Enter.
Jak widzisz, skrypt się wykonał, ale na stronie nie widzimy jeszcze naszego tekstu,
klikam ok, tekst się pojawił.
No i właśnie chodzi tutaj o to, że wszystkie skrypty, które tutaj są u góry muszą zostać wykonane, aby
parser przeglądarki mógł dalej wczytywać kod, czyli ten napis mógł się pojawić dopiero wówczas, kiedy
to wszystko zostało tutaj wczytamy.
Z tego właśnie powodu dobrą praktyką jest nie umieszczenie skryptów w elemencie head, ale umieszczenie ich
tutaj przed zamykającym elementem body, czyli w ten sposób. Wówczas cały kod się wczyta,
na stronie wszystko będzie widoczne, a na końcu uruchomią się skrypty, które będą na tej stronie potrzebne.
Jeśli teraz zapisze, przejdę tutaj i odświeżę. Może też skopiujemy sobie do nowego okna abyś mógł to zobaczyć.
Wklejam. Jak widzisz, tekst nam się już w tle pojawił
i dopiero później to okienko Alert się wyświetliło.
Czyli o to chodzi, abyśmy jeśli tylko możemy, skrypty umieszczali tutaj przed zamykającym tagiem body.
teraz na koniec jeszcze jedna uwaga - skryptów możemy umieszczać oczywiście wiele, możemy skopiować taką
linkę i tutaj moglibyśmy stworzyć nowy plik scripts2 i umieścić go tutaj. Natomiast będą one wczytane
w takiej kolejności, jak tutaj widzimy.
Czyli gdybyśmy w tym pliku scripts2 odwoływali się do jakiegoś kodu, do jakichś zmiennych, o których
jeszcze będę mówił, które są zawarte w pliku scripts
tutaj, to wszystko będzie OK.
Najpierw zostanie wczytamy ten plik, a później ten plik.