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.
Bardzo ważną sprawą w kontekście programowania w ogóle, ale także programowania na potrzeby sieci jest debugowanie
swojego kodu.
Musimy rozumieć zarówno narzędzia, które pozwalają nam debugować kod, ale także typy błędów jakie mogą
być przez kompilator czy w przypadku języka Java, przez interpreter, zwracane.
Dlatego w tej lekcji chciałbym Ci pokazać typy błędów, jakie może nam zwrócić
interpreter języka JavaScript. Już kilka z nich widzieliśmy w konsoli przeglądarki kiedy na czerwono
nam się linijka podświetlała.
Pierwszy z typów błędów jakie są dostępne w JavaScript'cie to jest to error, jest to taka klasa error i on nie
jest nigdy zwracany przez interpreter, jest to taka ogólna klasa błędu.
Natomiast widziałeś, że my możemy korzystać z tego błędu i wyrzucać go np. poprzez thow new Error, kiedy
korzystaliśmy z bloku try catch.
Następnym błędem, który możemy zobaczyć jest EvalError. Jest to błąd zwracany po niepoprawnym użyciu
funkcji eval, o której mówiłem ci, że najlepiej w ogóle nie korzystać.
Natomiast tutaj jeszcze jest gwiazdka.
Otóż ten błąd nie jest zwracany już przez interpreter od ECMAScript5 w górę.
Natomiast, gdybyś korzystał z jakiejś starej przeglądarki, gdzie mamy np. ECMAScript3, to taki błąd może się
pojawić.
Następny błąd to RangeEroor.
I taki błąd pojawia się gdy, podamy jakiś parametr liczbowy, który jest poza poprawnym zakresem.
I tutaj przykład, kiedy tworzymy nową tablicę, pokazywałem ci, że możemy to zrobić poprzez new Arrey i jako
pierwszy parametr podajemy, ile tam ma być elementów, na przykład 10.
Jeżeli podamy minus 10, to możemy otrzymać RangeError.
Następnie, bardzo częsty błąd, czyli ReferenceError i on występuje kiedy próbujemy podstawić jakąś nieistniejącą
referencje np. gdybyśmy do console.log chcieli wpisać firstName, a firstName nie została wcześniej
zdefiniowana, to chcemy podstawić właśnie nieistniejącą referencje i wtedy będziemy mieli ReferenceError.
Kolejnym błędem jest SyntaxError i jest to błąd w zapisie języka JavaScript, czyli gdybyśmy napisali
np. dwa var firstName Tomasz i braknie nam na końcu zamykającego cudzysłowu, to popełniliśmy błąd syntaktyczny,
czyli właśnie w zapisie języka JavaScript.
Następnie błąd, który czasami się pojawia jest to TypeError.
I on się pojawia wtedy, gdy chcemy użyć jakiś zmiennej lub parametru, która jest nieodpowiedniego typu,
np. gdybyśmy chcieli napisać new i podstawić tutaj taki pusty obiekt.
Ja ci już w tym kursie mówiłem, że operatora new możemy używać tylko na funkcjach i te funkcje są wtedy konstruktorami.
Natomiast na niczym innym nie możemy korzystać z operatora new,
czyli tutaj mielibyśmy TypeError, bo zły typ został podstawiony tutaj po prawej stronie tego operatora.
Mamy jeszcze jeden błąd, typ błędów. Jest to URIError i on się pojawia kiedy korzystamy z funkcji
encodeURI lub decodeURI i kiedy podamy do niej również nieprawidłowe parametr, na przykład gdybyśmy do
decodeURI podali sobie taki adres, na końcu, jak widzisz na czerwono zaznaczyłem procent, on się nie może
akurat w takim adresie pojawić w funkcji decodeURI
i wtedy taki błąd nam się pojawi.
Poznałeś zatem podstawowe typy błędów, a w kolejnej lekcji pokaże ci, jak możemy JavaScript debugować
z pomocą narzędzi deweloperskich przeglądarki Google Chrome.
Co już po części w tym kursie robiliśmy.