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.
Wiesz już jak działa destructuring obiektów więc teraz zajmiemy się taką
samą operacją ale na tablicach i ona będzie troszeczkę prostsza więc
na początek będę chciał sobie utworzyć tablicę i powiedzmy że chciałbym teraz utworzyć dwie
zmienne na podstawie wybranych indeksów na przykład pierwszego i drugiego utworzyłbym
zmienną first odwołałbym się do numbers 0 i to da mi dziesiątkę
a pod zmienną second do numbers 1 i
dodam jej wartość 20 więc tak byśmy to musieli zrobić do tej pory
oczywiście console log first i second powinno nam zwrócić te wartości
jak najbardziej tak się dzieje natomiast teraz chciałbym je wyciągnąć do tych
samych zmiennych ale za pomocą destructuringu będzie
to wyglądać bardzo podobnie jak w poprzedniej lekcji w przypadku obiektów tworzymy sobie zmienną
jakby za pomocą let const lub var i tutaj zamiast podawać obiekt jak już
wcześniej widziałaś podajemy tablice będziemy wybierać rzeczy z tablicy
teraz po prawej stronie przypisania oczywiście musi się pojawić jakaś tablica
więc zróbmy sobie to w ten sposób może to być tablica lub coś
co zawiera iterator czyli na stringu również by to zadziałało no i podobnie na
innych konstrukcjach które w sobie taki iterator zawierają ale o tym będzie jeszcze później natomiast
musimy wrócić to miejsce bo inaczej mielibyśmy błąd zresztą sprawdźmy jak
widzisz first is not defined czyli tutaj nam się błąd nie pojawił
zróbmy to w ten sposób okej czyli myliłem się nie generuje to błędu ale żeby
nam to działało to musimy tutaj podstawić jakieś wartości i teraz o
co chodzi muszę tutaj podstawić nazwy zmiennych znowu mogę zrobić miejsce ze spacją
ale nie muszę napiszmy sobie first i second i zobaczymy co się stanie
no i mamy wartości 10 i 20 więc wszystko działa jak należy i
o ile w poprzedniej lekcji w obiektach podawaliśmy nazwy właściwości obiektu
to teraz tutaj nie mamy takiej możliwości tu po prostu w takiej
kolejności w jakiej wpiszemy to takie będziemy mieli zmienne czyli innymi słowy tworzymy
tutaj zmienna first tak jak wyżej która będzie zawierać pierwszy element
bo ustawiłem ją tutaj po pierwszym indeksem a po przecinku wstawiłem zmienną
second więc będzie zawierać ona drugi element gdyby wstawił kolejną to miałaby ona wartość
właśnie spod tego trzeciego indeksu co jednak
gdybym chciał utworzyć zmienną która będzie zawierała wartość 40 możemy to
zrobić wpisując fourth czyli czwarta ale wcześniej wstawiając
jeszcze przecinek tworząc tutaj taką pustą przestrzeń to oznacza pierwsza tutaj druga
tutaj pusta to byłoby 30 no i tutaj ostatnia fourth
to będzie 40 spróbujmy sobie to wyświetlić i zobaczmy
i dokładnie tak też się stało więc jeżeli chcesz pominąć jakąś wartość robisz
to w ten sposób pamiętasz być może jak przy obiektach mówiłam że tutaj musi
się pojawić poprawny obiekt bo jeżeli pojawi się
tam na przykład null lub undefined to będziemy mieli błąd tutaj w tym przykładzie musi się pojawić
coś co ma w sobie iterator najlepiej żeby to była na przykład tablica więc
jeżeli pod numbers nie znalazłaby się tablica albo byłoby tutaj wywołanie jakiś funkcji
to też dobrze zrobić domyślny tutaj taki warunek że
będzie to pusta tablica wtedy nie będzie błędu po prostu te wartości będą miały undefined
czyli spróbujmy sobie tutaj postawić pustą tablice do tego destructuringu widzimy
że jest undefined ale nie ma błędu czyli zawsze warto tutaj taki domyślny
obiekt podstawić w tym przypadku jest tablica gdyby pod numbers
była jakaś wartość fałszywa bo jeżeli tutaj byłaby pusta tablica nie będzie problemu ona
nie jest traktowana jako wartość fałszywa natomiast gdyby to było null czy undefined no
to mielibyśmy problem pokażę ci jeszcze że podobnie jak w przypadku obiektów
możemy wcześniej utworzyć zmienne na przykład let first second i fourth
i następnie bez użycia let
zrobić taki zapis tutaj już nie musimy tego oplatać tak jak w przypadku obiektów
takim wyrażeniem czyli takimi nawiasami ale można
tutaj zadziała to bez problemu czyli najpierw mamy utworzone zmienne a potem do tych zmiennych
za pomocą takiego zapisu chcemy przepisać to co znajduje
się w tej tablicy numbers i zauważ że efekt jest dokładnie taki sam z tą
jednak możliwością tablic wiąże się ciekawy trick który chciałbym ci pokazać jest to
z angielskiego value swapping czyli zamiana wartości wyobraź sobie że chcielibyśmy
zamienić wartości dwóch elementów które są w tablicy powiedzmy
że mielibyśmy taką tablicę którą napisalibyśmy że jest to let albo
w zasadzie nie byłaby to tablica tylko byłoby to zmienne a równa
się 1 i b równa się 2 okej i chciałbym
zamienić a na b normalnie musiałbym mieć do tego trzecią
zmianę tymczasową na przykład temp której przypisałbym wartość a następnie
pod spodem do a przypisał bym to co jest w b a do b przypisałbym to
co jest w temp mam nadzieję że ma to sens i teraz jeżeli byśmy sobie wyświetlili
a i b i zróbmy to jeszcze wcześniej console log a i b
to te wartości powinny zostać zamienione mieliśmy
1 i 2 zamieniliśmy na 2 i 1 mamy taki oto zapis natomiast
możemy to zrobić za pomocą destructuringu w prostszy sposób zobacz
jak byśmy to mogli zrobić otóż wiemy że tutaj kiedy mamy już zdefiniowane
te zmienne tak jak zrobiłem wyżej to możemy bez użycia let skorzystać z
takiego zapisu więc napiszę sobie coś takiego a i b
i chcę do nich coś przypisać coś co będzie w tablicy po tej stronie czyli jeżeli
tutaj byłoby 1 i 2 to wiemy że pod a wpadnie 1 pod 2 wpadnie b
tutaj tworzy nową tablicę więc jeśli ją tworze nie muszę tutaj wpisywać tych wartości
ręcznie ale mogę je podstawić i podstawmy sobie b i a wygląda
dziwnie ale w ten sposób zamienimy sobie te wartości i zobaczymy 1 2 2 1
więc na spokojnie sobie na to zerknij myślę że ma to sens tutaj po prostu korzystam
z tego destructuringu mówiąc co ma się znaleźć pod a i b że najpierw
ma być a potem b i przypisz tamto co będzie po tej stronie a tu utworzyłem nową
tablicę podając jej to co mam już tutaj w zmiennych jak
zatem widzisz taki destructuring tablic również może być bardzo przydatny bo możemy
od razu sobie wyciągnąć kilka rzeczy które nas interesują lub na przykład zamienić wartości
co czasami również jest bardzo przydatne w kolejnej lekcji natomiast
zobaczymy trochę bardziej zaawansowane przykłady destructuringu