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 do naszej biblioteki chciałbym dodać coś co nazywa się możliwością
łączenia łańcuchowego już ci pokażę o co chodzi w 74 jesteśmy
i tutaj mamy elementy li chciałbym mieć taką możliwość że mogę napisać na
przykład li i tutaj powiedzmy at class red ale
potem po kropce chciałbym móc napisać na przykład css i tutaj font powiedzmy
size ustawić na 20 pikseli czyli chciałbym po kropce móc się odwołać
i to się nazywa łączeniem łańcuchowym często również można to złamać w ten sposób bo w javascripcie
nie ma to znaczenia i w jquery działa to podobnie więc teraz w jaki
sposób możemy to zaimplementować aby to mogło działać na przykład z metody
add class która będzie operować na this musimy zwrócić to this jeżeli zwrócimy
this to następnie kropka css operuje na tym naszym obiekcie this i
wszystko działa poprawnie więc jak teraz takiego at class zwrócić this
przejdźmy sobie tam gdzie mieliśmy at class było to w attributes i tutaj jak
widzisz mamy this each czyli wykonywaliśmy pętlę na wszystkich
elementach gdybym na końcu zwrócił this to to by działało poprawnie ale
równie dobrze mógłby napisać tutaj return this each wtedy
wykona się cały ten zapis i jeżeli metoda each coś zwraca zostanie
tutaj podstawiony i to dopiero zwrócimy dalej dlatego skoro tak często korzystaliśmy
z metody each zauważ że wcześniej kiedy wkleiłem kod to od razu było to
już z returnami to możemy dodać to do metody each ta metoda pojawia
się w iteration tutaj zauważ że ona nam wykonywała for each
z naszą funkcją i na końcu wystarczy że zwrócimy this czyli jeżeli z each zwrócimy this
to teraz każda metoda która korzystała z each doda
sobie tylko return żeby zwracać to co zwróciło each zobaczmy jak
widzisz tutaj na przykład tego nie zwracaliśmy nie będę tego robił
w tym miejscu tylko konkretnie w metodzie css zrobię to na końcu return this
i to co jest jeszcze ciekawe to zauważ że jeżeli na przykład będziemy pobierać właściwość css
tylko jedną to wtedy nie zwrócimy this i ma to sens również przypadku jquery czyli
gdybym napisał lis css i chcę tylko sobie pobrać wartość
red no to tutaj nie mogę potem napisać at class bo to mijałoby się z
celem dlatego że ta metoda kiedy podamy jej jeden parametr podobnie zresztą attr
którą tworzyliśmy ona ma nam zwrócić jakiś string więc na stringu
nie będzie metody at class i to jest jak najbardziej zrozumiałe dlatego w tym miejscu gdzie
musimy zwrócić na przykład jakiś string to go po prostu zwracamy ale
jeżeli operujemy na jakiejś kolekcji gdzie nic nie zwracaliśmy to
na końcu najlepiej zwrócić this czyli jeżeli ten return zakończy funkcję ten się nigdy
nie wykona ale jeżeli dojdziemy tutaj to zwrócimy po prostu całą tą kolekcję
tak naprawdę pod this nawet nie będzie kolekcja tylko będzie po prostu nasz obiekt który
na prototypie ma metody get at class i tak dalej dlatego powinno to wtedy działać
poprawnie zobaczmy czy wszędzie sobie to dodaliśmy przejdźmy również do innych funkcji zauważ
że tutaj też już zwracam bo wcześniej to wkleiłem return this each i tutaj przy
html również już to wcześniej miałem zrobione natomiast jeżeli zwracamy wewnętrzny kod
html to wtedy nie będzie tego łączenia łańcuchowego okej zobaczmy
jeszcze w events tutaj też zwracałem this each więc jeżeli zastanawiałeś
się wcześniej po co jest to return no to właśnie dokładnie w tym celu i teraz
powinno nam to działać jeżeli wykonamy at class zobaczmy raz jeszcze at class doda
klasy dla wszystkich elementów i zwróci to co zwraca each a each zwraca nam
na końcu this czyli nasz obiekt dzięki temu po użyciu at class na css możemy
pracować dalej no i widzimy że faktycznie to działa po pierwsze klasa red została
dodana a po drugie również style dzięki takiemu prostemu zabiegowi możemy
później dużo łatwiej pracować z naszą biblioteką łącząc sobie te wywołania w takim
łańcuchowy sposób