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.
Razem ze środowiskiem Node.js zainstalował nam się w systemie npm.
I npm jest to taki package manager dla JavaScript.
Jesteśmy teraz na stronie npmjs.com
i tutaj pokażę Ci, że możemy
wyszukiwać sobie różnych paczek i omówimy czym takie paczki są.
Czyli wyobraź sobie, że szukasz jakiegoś
slidera, bo chcesz wstawić na stronę obrazki i móc je np.
przewijać. Oczywiście możesz spróbować napisać go
sam, bo znasz już całkiem sporo jeżeli chodzi o Obiektowy Model Dokumentu, ale
często korzystamy z gotowych rozwiązań, które stworzył ktoś inny. Więc np.
jak sobie tutaj wyszukamy slider, to możemy różne rzeczy poprzeglądać,
no i powiedzmy, że znajdziemy tutaj jakiś swiper.
Widzimy, że on jest popularny, bo ma bardzo dużo pobrań tygodniowych, no i tutaj
możesz poczytać jak z czegoś takiego skorzystać np.
jak klikniemy tutaj to widać, że można do
strony podłączyć style i podłączyć sobie taki skrypt
i następnie jak z tego korzystać,
ale jest pokazane również, że można to zainstalować z użyciem npm. I będę w tej
lekcji chciał Ci pokazać jak właśnie instalować tego typu paczki, ale my to
zrobimy na trochę prostszym przykładzie i wyszukałem sobie tutaj luxon.
To jest taka biblioteka do formatowania daty, w ogóle do pracy z datą.
I będę chciał Ci pokazać jak przykład, który mieliśmy wcześniej w kursie
możemy z użyciem takiej biblioteki fajnie sformatować.
Więc tu też jest opisane jak z niej korzystać, no i jak ją zainstalować.
Możemy wpisać npm i albo install luxon, ale
zanim to zrobimy potrzebujemy utworzyć sobie taki specjalny plik Package.json.
A więc przechodząc tutaj mam katalog jak działa npm.
Jeżeli tutaj wpiszę ls lub na windowsie
dir żeby wyświetlić wszystko co tam się znajduje widzimy ten katalog i chcę do
niego przejść wpisując cd i będąc w tym katalogu wpiszemy npm bo
właśnie to polecenie nam się zainstalowało z node init i to nam stworzy taki plik
Package.json. Tutaj się odpowiada na
serię pytań i będziemy musieli w zasadzie tylko niektóre z nich podać.
Jeżeli tutaj bym wcisną enter to nam wyskoczy
błąd, bo domyślnie chce nazwać naszą paczkę.
Jak działa i tutaj spacja npm.
Zobaczmy, będzie błąd, bo nie możemy używać żadnych spacji, więc trzeba to poprawić.
Nazwiemy to jak działa npm, albo
możesz to nazwać dowolnie jak tylko chcesz.
Jaka wersja wybierzemy
domyślnie Enter, Enter, entry point to jest index,
możemy tak zostawić, bo nasz plik sobie nazwiemy index.js,
następnie test command.
Wszystko to możesz tak naprawdę pominąć, autor możesz coś wpisać,
nie musisz.
W zasadzie do samego końca możesz wciskać enter.
Natomiast ważne jest to, że jak to
wszystko się wykona to tutaj zostanie utworzony plik Package.json.
Właśnie taki plik json został stworzony i na jego podstawie npm będzie
wiedział co instalować, gdzie co dodawać itd.
No i te rzeczy, które tutaj podaliśmy są tu wpisane.
W każdej chwili można je zmodyfikować, ale
większość z nich nie ma znaczenia jeżeli nie będziesz publikował paczek.
Czyli ten wspomniany luxon, który
znaleźliśmy jest paczką, którą ktoś opublikował i właśnie musiał ją stworzyć w
ten sposób, że miał taki plik Package.json,
no i tutaj muszą być wpisane wtedy już poprawne
dane po to, żeby można było to opublikować.
Natomiast jak pracujemy dla siebie, to
tutaj nie ma większego znaczenia co wpiszesz, ale ten plik posiadać musimy.
No i teraz co ja bym chciał zrobić?
Chciałbym sobie tego luxona zainstalować, więc można wpisać tutaj npm
install luxon albo skrót to jest npm i luxon, tak jak było na stronie pokazane i
zaraz Ci powiem co tutaj się tak naprawdę dzieje.
Zobacz, kiedy to wszystko się zainstalowało
to po pierwsze do pliku Package.json npm automatycznie dodał taki klucz jak
dependencies czyli zależności i wstawił tutaj luxon w odpowiedniej wersji.
Oznacza to tylko tyle, że teraz ten plik
przechowuje jakie zależności są potrzebne do naszego projektu
zaraz z tego luxon będziemy korzystać.
Dodatkowo to co się stało to
został utworzony katalog node.modules, a w
nim zostały wpisane jakby wszystkie te rzeczy, które zainstalowaliśmy.
Czyli został tutaj stworzony katalog luxon
i w środku znajduje się kod tej biblioteki.
Jak widzisz sporo tutaj jest plików i my z tego wszystkiego możemy korzystać.
Zaraz Ci pokażę jak.
Czyli pobraliśmy sobie z internetu jakąś bibliotekę, która została tutaj zapisana.
Natomiast to, co jest świetne w tym, że
przechowywane jest to w tym miejscu, to jeżeli ten projekt udostępnimy komuś
innemu, to nie udostępniamy tego już z tym katalogiem node.modules.
Zobacz co by było, gdybym ten katalog po prostu usunął.
Tego katalogu nie ma, więc nie mamy już tej biblioteki.
Ale mając tutaj informację o tych
wszystkich zależnościach jakich nasz projekt wymaga, wystarczy, że wpiszemy
tutaj my albo ktoś inny, kto będzie pracował nad tym projektem
samo npm install i npm przeczyta sobie wszystkie zależności, które tutaj są i
pobierze je od nowa, tworząc tutaj katalog node.models.
Musimy tylko odświeżyć.
W zasadzie mogę to zrobić w ten sposób Explorer Refresh
i jak widzisz ten katalog rzeczywiście od nowa został tutaj utworzony. A więc to wszystko
jest pobierane z internetu, z tej paczki, którą ktoś opublikował.
No i teraz jak z takiego luxon skorzystać?
Stworzymy sobie tutaj w naszym kodzie w naszym katalogu plik index.js
i następnie będziemy chcieli ten Luxon sobie zaimportować.
Powiem Ci od razu, że w tej lekcji nie
będziemy wykonywać kodu w przeglądarce, ale w Node.js bo ta biblioteka luxon
jest stworzona tak, że ona nie korzysta z rzeczy specyficznych dla przeglądarek,
będzie działać tak samo w Node.js i w przeglądarce.
Tylko żeby z tego luxon skorzystać i
sformatować sobie datę potrzebujemy tą bibliotekę, która jest tutaj zawarta
gdzieś w node_modules.
W zasadzie w ogóle tam nie musimy zaglądać.
Potrzebujemy ją sobie zaimportować. I w Node.js
możemy importować rzeczy z użyciem funkcji require.
W lekcji poprzedniej pokazałem Ci, że jak
wpisaliśmy require fs to nam zaimportowało taki moduł wbudowany
w File System. Ale jeżeli sobie zrobimy coś takiego luxon require(luxon)
to node będzie automatycznie wiedział, że musi to zaimportować z katalogu node_modules,
bo tam to właśnie przez npm zostało pobrane.
Dzięki temu tutaj pod tą stałą luxon będziemy mieli dostęp do takiego obiektu,
który oferuje nam zgodnie z dokumentacją tego projektu bardzo wiele różnych metod.
No i teraz jeżeli przejdziemy sobie na
stronę tego projektu, to tutaj w sekcji quick tour możemy
zobaczyć, że znajduje się tam coś takiego jak DateTime i now zwróci nam aktualną datę.
Więc teraz będę chciał z tego po prostu skorzystać.
Czyli napiszę sobie const now równa się luxon.DateTime.now
w ten oto sposób.
No i oczywiście możemy sobie to w razie czego podejrzeć co pod tym now się znajduje.
Tutaj uruchomimy sobie z użyciem Node po
prostu ten plik index.js i Node automatycznie pobierze poprzez to require to co znajduje
się w node_modules co zostało zainstalowane przez npm.
Jak widzisz tutaj będziemy mieli taki wynik, który niewiele nam mówi.
Natomiast zgodnie z dokumentacją mamy tam
również taką metodę jak toFormat. I będę chciał teraz zrobić coś takiego,
że wpiszemy sobie w console.log now.toFormat, bo to co my chcemy zrobić to po prostu w
fajny sposób sformatować sobie datę nie robiąc tego ręcznie.
Pokazywałem Ci w tym kursie w rozdziale o
datach jak możemy poszczególne komponenty daty sobie powyciągać i wyświetlić np.
01. 03. 2021
natomiast z użyciem biblioteki luxon możemy to zrobić w dużo łatwiejszy sposób.
I tutaj podajemy taki string z formatem i znowu przejdziemy sobie do dokumentacji
I na takiej stronie znajdziemy jakby
wszystkie takie tokeny do formatowania, które możemy podać.
Czyli jak chcemy wyświetlić dzień, to tutaj znajdziemy sobie taki token jak day,
to będzie tutaj gdzieś wyżej. Dokładnie.
Czyli jak chcemy wypisać dzień bez zera
na początku, my z tym zerem pamiętasz
musieliśmy sami sobie poradzić, to podajemy d,
a jak chcemy z zerem na początku to podajemy dd.
Czyli wystarczy, że teraz podam tutaj dd kropka,
następnie chciałbym wyświetlić miesiąc, więc znajdźmy sobie gdzie to jest.
Poszukamy jakiegoś M.
OK. Tutaj mamy znowu tą samą sytuację.
Jeżeli chcemy miesiąc z zerem na początku podajemy MM.
Ta kropka to jest po prostu nasz znak.
Zamiast kropki możesz zrobić pauzę czy cokolwiek innego chcesz.
I teraz jak będziemy chcieli podać po
kropce jeszcze rok, zobaczmy gdzie tutaj jest rok.
Jest tutaj coś takiego.
Czyli możemy wyświetlić cały rok podając
albo samo y, albo 4 razy y, więc podamy samo y.
No i teraz właśnie to toFormat sformatuje nam aktualną datę w taki sposób, że
będziemy mieli właśnie dzień, miesiąc, rok.
Uruchomimy sobie ten plik jeszcze raz index.js
no i widzisz, dokładnie tak się stało.
No i teraz ja Ci chciałem pokazać tą lekcją.
Po pierwsze, że możemy z internetu
pobierać sobie gotowe paczki kodu, które ktoś inny napisał,
następnie taki moduł możemy zaimportować z
użyciem tutaj node i po prostu z niego korzystać.
Natomiast oczywiście nie zawsze warto
pobierać taką paczkę tylko po to, żeby sformatować jedną datę.
Bo jeżeli ten kod uruchamiali byśmy w przeglądarce internetowej to mielibyśmy
ten problem, że ta paczka będzie zajmowała np.
kilkadziesiąt kilobajtów
i nie zawsze warto jest dodawać tyle kodu
do strony tylko po to, żeby trochę łatwiej coś sobie zrealizować.
Niemniej jednak z wielu takich paczek gotowych rozwiązań będziesz korzystał
i w przypadku Node.js
jak widzisz importujemy je z użyciem require,
natomiast gdybyśmy ten sam kod chcieli
uruchomić w przeglądarce internetowej, potrzebny nam do tego będzie tzw.
bundler kodu
i o tych bundlerach porozmawiamy sobie w lekcji kolejnej.