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.
Na początek odpowiedzmy sobie na pytanie, czym właściwie jest EcmaScript6. Jest
to specyfikacja języka, na której bazuje język JavaScript i ona jest wydana przez
organizacje Ecma i konkretna wersja 6, została wydana
w czerwcu 2015 roku, pod fachową nazwą EcmaScript 2015,
więc Ecma jest organizacja, która tworzy standardy i tworzy
właśnie, można powiedzieć, standard języka EcmaScript, tylko że sam język jak EcmaScript
w sobie, można powiedzieć, że nie istnieje i dopiero na podstawie
tej specyfikacji można utworzyć jakąś konkretną implementację. No i JavaScript jest
taką jedną z implementacji tego standardu EcmaScript. ES6,
bo tak też możemy w skrócie mówić o EcmaScript 6 wprowadza do języka JavaScript bardzo
wiele nowości w postaci zarówno nowych konstrukcji, jak i dodatkowych metod. Jeżeli
chodzi o dodatkowe metody, to oznacza, że pracowalibyśmy tak jak do tej pory, czyli znamy
już język JavaScript i po prostu mamy kilka, na przykład, dodatkowych metod na obiektach. Natomiast
mówiąc nowych konstrukcji, mam tutaj na myśli zupełnie nowe zapisy w języku, który
wcześniej w języku JavaScript nie było. Z tego powodu pewnych nowe konstrukcji
należy się nauczyć, aby też wizualnie potrafić czytać kod napisany przez
siebie czy przez innych, bo parę konstrukcji jest takich, które wykonują niecodziennie dla
deweloperów, którzy nie korzystali wcześniej z EcmaScript6. Teraz
pytanie co rozumieć pod EcmaScript 6. ES6
odnosi się tak naprawdę fachowo do specyfikacji EcmaScript 2015, natomiast
potocznie często mówi się i czy określa się tym mianem również późniejsze zmiany, które
były specyfikacji na przykład EcmaScript 2016, czyli często można
usłyszeć, ktoś może powiedzieć, że zrobił coś za pomocą zapisu ES6,
niekoniecznie mając na myśli, że to z czego skorzystał było już w specyfikacji EcmaScript
2015, ale być może również później. Można się natomiast
spotkać jeszcze z takimi określeniami, że ES6 to jest EcmaScript 2015, ES7 to 2016
czy ES8 to EcmaScript 2017. Natomiast sama organizacja
Ecma tutaj jakby proponuje, aby nazywać tę specyfikację konkretnie rokiem, czyli
odwoływać się do nich na przykład EcmaScript 2015. Rzućmy
sobie jeszcze okiem na najważniejsze nowości w ES6. Nie będziemy ich teraz umawiać,
one są umówione wszystkie w tym kursie. Natomiast tylko wyjustujmy te najważniejsze
zmiany. Będzie to przede wszystkim let i const. Są to nowe słowa,
które pozwalają tworzyć zmienne i stałe, podobnie jak w przypadku słowa var. Natomiast tutaj
będą pewne różnice. Następnie rewolucja w syntax'ie, czyli w zapisie. Tak
zwane funkcje strzałkowe czy arrow functions, one sprawiają, że na pierwszy rzut oka
wydaje się że napisaliśmy konstrukcję, która jest w języku JavaScript niepoprawna. Jednak
tak naprawdę w ES6 jest jak najbardziej poprawna. Język
doczekał się również definicji klas. Do dyspozycji otrzymujemy
także nowe operatory rest i spread, które będą bardzo przydatne. Następnie
mamy destructuring obiektów. Jest to możliwość rozkładania tak naprawdę na czynniki
pierwsze elementów jakiegoś obiektu czy na przykład tablicy i tworzenia z nich zmiennych, coś
co w innych językach było. W języku JavaScript niestety nie. Następnie
kolejna rzecz, która w wielu językach programowania jest od lat. My tego do tej pory nie mieliśmy, są to
domyślne parametry na przykład dla funkcji. Następnie template strings,
czyli taka niewielka, ale jednak rewolucja w zapisie stringów i w
tym, co można za ich pomocą zrobić. Następnie zupełna nowość. Są
to symbole, które będą umożliwiały na między nimi taki niskopoziomowy
dostęp do samego języka JavaScript i do zmiany wielu jego zachowań,
które wcześniej nie były możliwe. Jeśli chodzi o obiekty to doczekaliśmy się fajnego
skróconego zapisu dla obiektów i jeszcze kilku usprawnień, które po prostu pozwalają nam
pracować łatwiej. Nie robią niczego czego nie dałoby się zrobić wcześniej, ale ułatwiają
znacznie pracę. Następnie pojawiły się tak zwane iteratory
i generatory. Dodatkowo również natywne promise'y, czyli
tak zwane obietnice. Jest to coś co było przez różne biblioteki implementowane od lat,
a teraz po prostu działa natywnie. Nowymi strukturami
dla danych są map i set, a jeśli chodzi jeszcze o ten
wspomnianej wcześniej niskopoziomowy dostęp do wielu mechanizmów języka JavaScript, to pojawiło
się tak zwane proxy API, które nam na wieleoperacji pozwala. Jedną
z najciekawszych nowości w ES6 są moduły i znowu jest to coś
co w wielu językach programowania było oczywiste, w języku JavaScript tego brakowało, a więc
jest to możliwość podzielenia swojej aplikacji na wiele różnych modułów i z jakiegoś modułu możemy
coś wyeksportować, a w innym sobie to zaimportować i na tym pracować. Oprócz
tych, według mnie najważniejszych zmian mamy jeszcze wiele mniejszych drobniejszych zmian,
na przykład w wyrażeniach regularnych czy w zakresie wsparcia dla unicode i o
tym też pokrótce sobie z tym kursie wspomnimy. Na koniec rzucimy
jeszcze okiem jak wygląda wsparcie dla ES6 w nowoczesnych przeglądarkach. Pod
takim adresem będziesz mógł znaleźć tablice kompatybilności jeżeli chodzi o ES6,
ale nie tylko. Tutaj mamy zaznaczone ES6. Możemy również ES 2016+
lub ES next. Tutaj są takie zmiany, które są zaproponowane, ale jeszcze
nie są oficjalnie w specyfikacji. Jak widzisz moja przeglądarka, czyli Google
Chrome wspiera w 97% ES6, więc tak naprawdę możemy
pisać nowoczesny kod i bezpośrednio uruchamiać go w przeglądarce. Natomiast
nie zawsze tak będzie i jeżeli będziesz chciał wspierać również starsze przeglądarki, a jednocześnie
pisać nowoczesny kod i nie czekać kilku lat na to aż będzie można z niego korzystać
to istnieją, tak zwane, transpilatory kodu ES6 do ES5 i
jednym z najpopularniejszych jest Babel, które tutaj widać. Jest
to narzędzie, które pozwoli ci napisać nowoczesny kod i następnie automatycznie przetranspilować
go do ES5 i uruchomić również w
starszych przeglądarkach. Jak widzisz, Babel wspiera ES6 w 71%
i to wynika z tego, że pewne nowe konstrukcje tego języka są takie, że
nie da ich się odwzorować w języku EcmaScript5. Natomiast zdecydowana
większość z nich działa tak, że po prostu one pozwalają nam coś zapisać łatwiej i
prościej, ale da się też to przełożyć na EcmaScript 5 i dzięki temu Babel
może to dla nas zrobić. W tym kursie dowiesz się oczywiście jak korzystać z Babel,
natomiast gdybyś chciał pisać kod, który jest uruchamiany zawsze w jednym środowisku, na przykład
w Node.js na serwerze, to możesz z kolei tutaj zobaczyć, że Node.js w 97%
również wspiera EcmaScript 6, a więc pisząc taki kod, który wiemy, że jest u
nas na serwerze uruchamiany, gdzie wiemy jaka jest wersja środowiska, możemy śmiało
korzystać ze wszystkich dobrodziejstw EcmaScript 2015. To
by było tyle tytułem wstępu. Mam nadzieję, że to cię zaciekawiło i że niebawem usłyszymy
się już pierwszych lekcjach, takich bardziej praktycznych, gdzie pokażę ci jak
działa EcmaScript 6 i jak działają jej najważniejsze konstrukcje oraz kiedy
z nich korzystać.