Nowy Standard JavaScript
10 godz. 43 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperNa początku dowiesz się jakie nowości pojawiły się w języku, jeśli chodzi o tworzenie zmiennych i stałych. Poznasz dwa nowe słowa let i const, a także dokładnie omówimy ich różnice, względem znanego nam do tej pory słowa var. Następnie poruszymy temat obiektów. Zobaczysz jak nowy zapis pozwoli znaczenie ułatwić nam pracę i sprawić, by kod był bardziej czytelny. W kolejnym rozdziale porozmawiamy o zmianach w funkcjach. Poznasz tzw. arrow functions wraz z poradami, kiedy z nich korzystać, a także z konsekwencjami ich użycia. Zobaczysz również, jak korzystać z domyślnych parametrów. Następną nowością będą operatory rest i spread, które znacząco uproszczą pisanie kodu dla funkcji i tablic. Chwilę później rzucimy okiem na bardzo ciekawy temat, mianowicie na tzw. destructuring. To nowa funkcja języka, która pozwala w łatwy sposób wyciągnąć odpowiednie dane z tablic i obiektów, nawet jeżeli te posiadają kilkupoziomową, zagnieżdżoną strukturę. Zmian doczekały się również ciągi znaków. Poznasz nowy zapis, tzw. template string, a także możliwość wykorzystania funkcji tagujących.
ES6 wprowadza do języka JavaScript zapis klas. I choć na początku wydaje się, że to duży krok w stronę klasycznych obiektowych języków programowania, to jak się przekonasz, jest to w dużej mierze tzw. syntactic sugar, a więc zupełnie nowy, prostszy zapis, a prawie identyczne jak wcześniej działanie, oparte na dziedziczeniu prototypowym. W kursie poruszymy również temat Symboli oraz tego jak z nimi pracować, a chwilę później poznasz iteratory. To konstrukcje ułatwiające iterację, które znacząco upraszczają pracę z kolekcjami danych. Wraz z iteratorami poznasz również generatory, które ułatwiają z kolei tworzenie tych iteratorów. Istotną nowością w ES6 są również natywne Promise. To sposób na rozwiązanie problemu asynchroniczności, który znamy od bardzo dawna w postaci różnych bibliotek. Od teraz jednak Promisy znajdują się bezpośrednio w języku. Nowymi konstrukcjami, które pozwalają pracować z kolekcjami danych, są Map i Set. Dowiesz się jak z nich korzystać, a także do czego są przydatne. W jednym z rozdziałów rzucimy też okiem na tzw. Proxy API. To mechanizm języka, który pozwala na dość niskopoziomowy dostęp do różnych operacji. I choć być może nie jest to coś, z czego będziesz korzystał nad wyraz często, to warto wiedzieć, jakie są nowe możliwości tego API.
Jedną z najlepszych nowości, która zawitała do języka JavaScript wraz z ES6 są moduły. To możliwość dzielenia kodu na wiele plików, z których można pewne wartości wyeksportować, a następnie zaimportować je w innych modułach. Tutaj dowiesz się wszystkiego, co z modułami związane. Zobaczysz wiele sposobów na eksport i import, a także jak pracować z modułami w przeglądarkach internetowych. Kurs skupia się na omówieniu wszystkich najważniejszych nowości w ES6, dzieląc je na rozdziały. Jeden z nich natomiast, poświęcony został omówieniu mniejszych zmian, które znalazły się w specyfikacji. Poznasz w nim np. nowe metody tablic czy ulepszoną współpracę z Unicode.
Specyfikacja EcmaScript 2015 wprowadziła naprawdę bardzo wiele zmian, ale jej twórcy założyli, że od tego czasu każda kolejna wersja specyfikacji będzie pojawiać się co roku. Oznacza to przede wszystkim, że nie będziemy na raz bombardowani aż tak wieloma zmianami, jak w 2015 roku. W tym kursie nie zabrakło zatem omówienia nowości ze specyfikacji ES2016 oraz 2017, gdzie poznasz np. nowe metody dla stringów czy funkcje asynchroniczne.
Kiedy będziesz już uzbrojony w solidną wiedzę z zakresu nowości w ES6, dowiesz się jak w praktyce pracuje się dzisiaj z tym standardem. W jednym z rozdziałów omówimy nowoczesny workflow z użyciem npm i wykorzystamy popularne narzędzie webpack, do pracy z modułami, a także do transpilowania kodu ES6 do wersji ES5. Dzięki temu nowoczesny kod, który napiszemy, będzie mógł być uruchamiany również w starszych przeglądarkach, które nie wspierają najnowszego standardu. Dowiesz się na co zwrócić uwagę, by wszystko działało bez zarzutu.
Zwieńczeniem tego kursu będzie praktyczny projekt, w którym od podstaw wykonamy swoją własną bibliotekę do pracy z Obiektowym Modelem Dokumentu. Będzie ona w działaniu nieco podobna do znanej chyba wszystkim biblioteki jQuery. Na tym przykładzie postaramy się wykorzystać jak najwięcej wiedzy z zakresu ES6 zdobytej wcześniej. Stworzymy metody do pracy z drzewem dokumentu, a więc do wyszukiwania elementów, do tworzenia nowych, do przypisywania im klas, atrybutów czy styli CSS. Nie zabraknie również modułu odpowiedzialnego za współpracę z Ajax. Cały kod utworzymy oczywiście w sposób modułowy, aby bibliotekę można było łatwo rozwijać w przyszłości. Na koniec projekt ten przetranspilujemy do kodu ES5 z użyciem Babel i przetestujemy w starszej przeglądarce Internet Explorer 11, aby upewnić się, że nasza biblioteka działa poprawnie.
Kurs ten jest dla wszystkich osób, które znają już język JavaScript i czują się w pracy z nim swobodnie. Jeśli zatem chciałbyś pracować z nowoczesnym kodem JavaScript, to ten kurs jest zdecydowanie dla Ciebie. A może masz zamiar poznać framework Angular lub bibliotekę React? Tam również wykorzystywany jest najnowszy zapis ES6, więc wiedza ta będzie naprawdę pomocna. Z solidną wiedzą z zakresu EcmaScript 6, bez trudu pozostaniesz na bieżąco z każdą kolejną edycją tej specyfikacji.
w tej lekcji chciałbym dodać metody do pracy ze zdarzeniami abyśmy mogli przypisywać
na przykład zdarzenia kliknięcia do elementów więc będziemy to chcieli zrobić znowu w
osobnym zupełnie module dlatego utworzymy sobie tutaj w library kolejny plik events
zróbmy sobie to w katalogu 73 start js
library events js znowu będziemy sobie eksportować
jakiś obiekt jak widzisz dużo łatwiej się tak pracuję niż eksportować klasę którą następnie
w jakiś sposób rozszerzamy więc tak możemy sobie to wykonać za pomocą tej
mixiny no i oczywiście dzięki temu możemy jakby wiele tych plików importować
do naszej mixiny przypominam w tym miejscu i rozszerzać na raz jakby
wiele tych obiektów w przypadku klasy musielibyśmy to znowu mieć w jednej więc
tutaj będziemy chcieli mieć dwie metody ale o tym za sekundę najpierw sobie
to może po prostu zaimportujemy tutaj na górze czyli napiszmy events from
events i tutaj też chcemy dodać events tyle wystarczy
i znowu wszystko z tego pliku będzie dodane na prototypie chciałbym mieć dwie metody
on i off i jeżeli w test byśmy je chcieli wykonać to chciałbym do wszystkich
elementów li przypisać za pomocą metody on kliknięcie
czyli podobnie jak w jquery i podać funkcję która tutaj może mieć event
ale nie musi i chciałbym na początek zrobić
console log this this w takiej funkcji obsługi to powinno być po prostu powinien
być ten element na którym się wykonało zdarzenie więc metodę on chciałbym dodać a
metoda of którą dodamy pozwoli nam jakby usunąć taki event
listener w jquery też one wyglądają podobnie oczywiście ja nie zaglądałem do kodu źródłowego jquery
sugeruje się tylko tym jak pracujemy z biblioteką jquery więc chcę dodać
metodę on i off ja jej po prostu tutaj wkleję mamy
typ i funkcje czyli pod parametrem typ będę miał click a pod fn
będzie cała ta funkcja i po prostu chcę przeiterować przez wszystkie elementy i
każdemu z nich za pomocą add event listener dodać plik na
funkcję którą przekazaliśmy i tutaj ostatni parametr
use capture na wartość false zazwyczaj tak to właśnie wygląda natomiast metoda of
pozwoli nam usunąć za pomocą natywnej metody remove event listener właśnie
dodany listener w ten sposób więc to sobie zapiszemy i to już nam powinno
działać zobaczmy tutaj widzimy że pojawia się jakiś błąd pojawił
on się w events okej czyli
mamy 404 a więc podałem jakąś niepoprawną ścieżkę albo w zasadzie utworzyłem
ich je w złym miejscu jak widzisz tutaj zabrakło s więc zrobię sobie
rename i dodam s tutaj na końcu zapisze teraz
po odświeżeniu jest okej i zobaczmy czy po kliknięciu w te elementy pojawia nam się console log this jak
widzimy dokładnie tak się dzieje i teraz pokażę ci jedno z najfajniejszych rzeczy
otóż to this jest automatycznie przekazywane właśnie przez ten event
listener przez add event listener więc nic nie musieliśmy tutaj zrobić natomiast
to co jest ciekawe to tutaj pod ten this mamy ten natywny obiekt
na której kliknęliśmy czyli ten natywny obiekt ma na przykład text content ale
nie ma naszych metod takich jak na przykład tekst więc gdybym chciał wyświetlić this text zobaczymy
pojawi się błąd bo na tych natywnych obiektach w obiektowym modelu dokumentu
nie ma metody text ale możemy podobnie jak w jquery robiliśmy przepuścić
sobie taki obiekt i być może w jquery często widziałeś coś takiego to
po prostu przepuszczenie tego obiektu przez taką funkcję nasza funkcja nazywa się equery
więc jeżeli tam wstawie this zastanówmy się co się wykona przejdźmy
sobie do main equery jest tutaj czyli do this przekażemy
do init sprawdzimy czy to jest selektor nie jest bo jest to jakiś obiekt
nie jest to też tag html okaże się że nasza funkcja is dom node
zwróci true okaże się po prostu że jest to element dom dlatego do nodes przypiszemy
ten jeden konkretny element i przejdziemy do equery create przekazując
tam nodes będzie to tylko jeden element ale equery wtedy tutaj sprawdzi
czy to jest tablica nie jest więc w utworzy nową z tym jednym elementem i później
wszystko będzie działać już poprawnie zatem w ten sposób powinniśmy mieć dostęp
do metody text dlatego że cały ten zapis opakuje nasz obiekt natywny
i zwróci obiekt equery na którym wszystkie te metody tak samo jak na przykład
on powinny być dostępne sprawdźmy i teraz po kliknięciu w konsoli jak
widzisz widzimy poszczególne teksty i wszystko działa podobnie mógłbym
tutaj po kliknięciu na przykład dodać jakąś klasę czy style jak
zatem widzisz w ten sposób możemy łatwo znowu dodać sobie eventy do naszej biblioteki natomiast w
kolejnej lekcji będziemy tą pracę jeszcze kontynuować na kolejnych możliwościach
tej biblioteki