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 jeszcze tylko króciutko o tym, który zapis do jakich sytuacji jeżeli chodzi
o let i const. Generalnie wielu deweloperów uważa, że nie powinniśmy już korzystać
ze słowa kluczowego var, jeżeli piszemy kod, który będzie działał w obrębie
środowiska, które wykorzystuje ES6 i rzeczywiście, ja też się z tym
zgadzam. Słowo var ma ze sobą jakby wiele problemów. Już
te problemy poznałeś. Wiążą się z tym słowem, z użyciem tego słowa. Dlatego
można rzeczywiście pominąć korzystanie z tego słowa, chyba że rzeczywiście wiemy,
że pewne jego dziwne zachowania są nam w danej sytuacji na
rękę. Natomiast generalnie najlepiej korzystać tylko z const i let i teraz
pokażę ci jeszcze na szybko w jakich sytuacjach. Jeżeli chcesz utworzyć jakąś wartość, która na
pewno się nie będzie zmieniać i przy jakiejkolwiek próbie zmiany chciałbyś mieć pewność, że wygenerowany
zostanie błąd, to korzystaj z const. Wcześniej tylko krótko wspomniałem,
że dobrą okazją do korzystania z const będzie na przykład utworzenie takich stałych
gdzieś na górze jakiegoś swojego projektu, jak na przykład API i URL. Wiemy,
że będziemy pod taki adres wysyłać jakieś zapytanie, na przykład Ajax, to przepiszmy to
sobie do stałej. W ten sposób na pewno tego nie nadpiszemy. Podobnie gdybyśmy
na przykład chcieli stworzyć wyrażenie funkcyjne, czyli nie napisać function i na przykład
tutaj getName, ale chcielibyśmy przypisać to, po
prostu, jakby do zmiennej, czyli mogliśmy zrobić var getName równa
się function, to możemy tym razem zrobić const. W ten sposób również mamy
pewność, że samej nazwy getName nikt nam nie nadpiszę, bo nazwę
funkcji normalnie można byłoby nadpisać, więc w ten sposób. Jeżeli
utworzymy funkcję, która zwraca na przykład Kowalski, to
będzie mieli pewność że jeżeli wykorzystamy getName z parą nawiasów okrągłych,
to zawsze będziemy mieli poprawną wartość i nikt nam tej funkcji przez przypadek
nie nadpisze. Kiedy natomiast korzystać z let. Otóż tak naprawdę
w każdej innej sytuacji. Czyli powiedzmy, że chcielibyśmy mieć tu jakiegoś if'a i w
którym byłoby true z jakiegokolwiek powodu. Wewnątrz chcielibyśmy utworzyć zmienną
niewidoczną wyżej, to najlepiej skorzystać z let i napiszmy sobie na
przykład name i niech to będzie to, co
zwróci nam funkcja, którą mieliśmy u góry. Wcześnie dodamy do tego Jan, powiedzmy w
ten sposób, getName i mamy poprawną wartość, z której tutaj można skorzystać. Natomiast
gdybyś mnie zapytał co jeżeli chciałbym w takim if'ie zmienić wartość jakieś zmiennej, to
ja bym ci wtedy powiedział utwórz ją wcześniej. Na przykład name i niech
ona nie ma żadnej wartości albo ma jakąś wartość, a później po prostu ją zmieniaj. Wtedy
nie będzie problemu z tym zakresem jakby tutaj w tym zakresie name. Będzie oczywiście odwoływało
się do name, która jest wyżej. Chyba, żebyśmy w tym zakresie zdefiniowali własne,
więc w takiej sytuacji jak najbardziej, można skorzystać z let. No i jeszcze
jednym kapitalnym przykładem korzystania z let, naprawdę polecam zawsze to robić,
będzie pisanie pętli na przykład for let i równa się
0 i mniejsze od 10 i na przykład i plus plus. Zawsze
w takich sytuacjach korzystaj z let. Jak zatem widzisz, możemy przestać
korzystać ze słowa kluczowego var, chyba, że faktycznie znajdziesz się w takiej sytuacji, że przyjdzie ci
do głowy iż ono ma jakieś zalety, które sprawiają, że w danej sytuacji warto
z niego korzystać. Jeżeli nic takiego nie przychodzi ci do głowy, to po prostu przestań
korzystać z tego słowa i korzystaj z const lub let. Jeżeli natomiast masz
na to jakiś inny pomysł, to oczywiście wszystko zależy od ciebie. Ja wyrażam tutaj
wyłącznie twoje zdanie, ale też poparte trochę zdaniem innych deweloperów, którzy stwierdzili,
że słowo var nie jest już konieczne.