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 tym kursie pokazałem ci już praktycznie wszystko co jest związane z ecmascript 2015
i również tymi nowszymi standardami co chciałem ci pokazać natomiast
okazuje się że jeszcze ta praca z es6 dzisiaj nie
wygląda aż tak łatwo że po prostu piszemy kod i bezpośrednio uruchamiamy go w przeglądarce
o ile jeżeli pracował byś z node js to w tych nowszych wersjach bez
problemu możesz wpisać kod es6 i bezpośrednio uruchamiać go w tym środowisku z
tego powodu że wiesz na jakim środowisku na jakiej jego wersji będzie
twój kod uruchamiany z kodem pisanym na potrzeby internetu niestety
nie jest tak łatwo jak się domyślasz różni użytkownicy mają różne przeglądarki
i możemy napisać kod który będzie działał poprawnie w Google Chrome ale
nie będzie poprawnie działał w jakimś internet explorerze lub starszej wersji Firefoxa nie
mamy pewności nigdy jaką wersję przeglądarki będzie miał użytkownik
odwiedzający naszą stronę czy aplikację internetową z tego powodu możemy
kod napisany w es6 przetranspilować do es5 te rzeczy które
się da przetraspilować możemy właśnie zamienić na ten zapis w
ecmascript 5 i dzięki temu nawet w starszych przeglądarkach nasz kod będzie poprawnie działał
natomiast nie chodzi tutaj tylko o transpiracje do es5 ale także o pracę z modułami widziałeś
już jak pracować z modułami i pokazałem ci że przynajmniej w momencie kiedy ja ten kurs nagrywam
nie działają one zbyt dobrze w przeglądarkach internetowych tak naprawdę jedynie
w safari a w innych musimy włączać specjalne flagi dlatego choćby
nawet po to żeby pracować poprawnie z modułami musimy wykorzystywać dodatkowe
narzędzia które pomogą nam wszystko zbundlować czyli spakować do jednego
lub kilku plików ale generalnie zajmą się tymi modułami z tego właśnie
powodu w tej oraz kilku kolejnych lekcjach będę chciał ci pokazać jak dzisiaj
pracuje się z takim kodem es6 pokażę ci jak pracować z modułami i
też jak transpilować ten kod do es5 ale abyśmy to mogli zrobić musisz
znać podstawy pracy z npm więc jeżeli nie pracowałeś wcześniej jeszcze z
npm to w tej lekcji pokażę ci na czym to polega na
początku tego kursu w lekcji o tym jak korzystać z plików źródłowych mówiłem że
musisz zainstalować sobie środowisko node js no i generalnie jeżeli do tej pory uruchamiałeś
poprawnie aplikacje którą teraz też widzisz na ekranie to znaczy że node i npm już masz
dlatego nie będziemy przechodzić przez proces instalacji ale pokażę ci jak z
npm korzystać ja mam tutaj swoim edytorze otwarty folder
64 i w nim mamy tylko tak naprawdę jeden skrypt w którym
jest jakiś błąd mój edytor mi to pokazuje ale to jest na razie nie istotne będę
zaraz chciał ci pokazać jak możemy ten plik sobie zwalidować natomiast najpierw pokażę
ci jak w ogóle pracuje się z npm tak więc musimy sobie przejść do terminala
i ja już tutaj sobie przeszedłem jeśli bym wpisał pwd na Macu i na Linuxie
takie polecenie działa to zobaczymy ścieżkę do katalogu w którym się znajduje
poleceniem ls tutaj zobaczę że mamy folder JavaScript jeżeli
jeszcze nie potrafisz pracować właśnie w takim okienku terminala to wróć sobie do lekcji o
plikach źródłowych bo tam podlinkowałem do tutoriali które są na eduweb
pl za darmo dostępne i w nich możesz zobaczyć jak na Windowsie czy na
Macu pracować właśnie w takim terminalu zanim tutaj zaczniemy cokolwiek robić
to powiemy sobie dwa słowa na temat tego czym jest npm znajdziesz npm
pod adresem npm js kropka com i jest to takie
zdalne repozytorium taki serwis gdzie znajduje się mnóstwo kodu
JavaScriptowego kilka lat temu tutaj znajdowały się głównie moduły
dla note js natomiast już od jakiegoś czasu mamy tutaj tak naprawdę
różne koty JavaScript również taki który uruchamiamy w przeglądarce internetowej także
znajdziesz tutaj na przykład bibliotekę jQuery i możemy z npm sobie ją pobrać tutaj
jest oczywiście wyszukiwarka moglibyśmy wyszukać sobie jQuery i zapewniam
cię że znajdziesz taką bibliotekę jest ona tutaj natomiast nie pobieramy
z tej strony bezpośrednio tych pakietów tylko robimy to z poziomu terminala
co będę chciał ci teraz pokazać przejdźmy sobie zatem do terminala i
żebyśmy mogli w ogóle korzystać npm to musimy
wygenerować sobie plik package kropka json czyli tutaj nie mam takiego
pliku i wpiszmy sobie npm init jest to polecenie które
pozwoli nam odpowiedzieć na serię pytań i wygeneruje dla nas taki plik no
i widzimy pierwsze pytanie name od razu ci powiem że jeżeli nie planujesz teraz tworzyć
jakiegoś modułu który umieścisz w tym rejestrze npm tylko po prostu chcesz pracować lokalnie nad
rozwojem jakiejś aplikacji to tutaj na większość tych pytań możesz odpowiedzieć po prostu wciskając
enter czyli wersja jest nieistotna opis również jest nieistotny entry point
też dla nas nie będzie teraz dla nas istotny w zasadzie wszystko co tutaj widzisz możesz
do końca przeklikać enterem i na końcu zobaczymy podgląd tego pliku i pytanie czy
to jest w porządku wybieram enter i teraz jeśli bym sprawdził taki
plik się tutaj pojawił czyli w edytorze też możemy zobaczyć że plik package json tutaj
jest i są w nim właśnie takie klucze według odpowiedzi których udzieliliśmy
kiedy mamy już taki plik to możemy będąc w tym miejscu właśnie w terminalu
zainstalować sobie coś z rejestru npm i robimy to poleceniem npm
install i na przykład że jQuery jeżeli byśmy sobie tutaj wyszykali i przeszli
to będziemy widzieć z boku zawsze w jaki sposób dany moduł zainstalować
czyli npm install i nazwa wpiszmy sobie npm
install required i teraz internetu pobierze się jQuery i wszystkie
zależności tej biblioteki czyli jeżeli będziesz pobierał jakiś pakiet który zależy
jeszcze od innych to one automatycznie zostaną pobrane i co ciekawe jeżeli byśmy
zrobili tutaj ls to pojawił się katalog node modules ja
go nie zobaczę tutaj w edytorze bo mam wykluczone aby mi nie pokazywało tych katalogów natomiast
on się tutaj pojawia gdybyśmy na niego przeszli to okazuje
się że w środku jest katalog jQuery gdybyśmy przeszli dalej to w tym katalogu jQuery
znajduje się jeszcze kilka plików i również tutaj w dist znaleźlibyśmy zobaczymy
ls gotową wersję biblioteki jQuery czy to nie zminifikowaną
czy zminifikowaną no i teraz mógłbyś zapytać czy będziemy tę bibliotekę stąd
wyciągać jakoś podłączę do swojej strony otóż można tak zrobić ale my
będziemy z modułami więc pokażę ci jak można ją sobie zainkludować ale
o tym w lekcji kolejnej tak więc będę chciał sobie wrócić kilka katalogów do
góry jeszcze raz okej
i jQuery nam się zainstalowało tylko zobaczymy jedną rzecz otóż w pliku package json
nic się nie zmieniło dlatego ważne jest aby przy instalacji jeszcze raz
sobie wpiszmy npm install jquery dopisać taką flagę jak save
z dwoma kreskami lub z jedną kreską duże s to oznacza że chcemy
zainstalować jakiś moduł i dopisać go tutaj do klucza dependencies czyli
chodzi o to że nasz projekt zależy od biblioteki jQuery a więc ona jest
jego integralną częścią ale kiedy będziemy go udostępniać nie będziemy go udostępniać
razem z katalogiem node modules tylko właśnie z tym plikiem package json jeżeli
zatem coś instalujesz to dopisuj save i dzięki temu zostanie to dodane właśnie
do pliku package json teraz pokażę ci jeszcze inny rodzaj instalacji
chciałbym sobie zainstalować jshint to
pozwoli mi z kolei walidować mój kod JavaScript czy on jest poprawny tutaj widzimy jak
to zainstalować ale nie będziemy dodawać flagi g o tej fladze powiemy
sobie jeszcze później natomiast przejdźmy tutaj wpiszę npm
install jshint i tym razem dopisze dwie kreski save
dev lub może napisać jedną kreskę i duże d to mi
zainstaluje również ten moduł czyli pobierze go do lokalnego katalogu node modules i
tym razem doda mi klucz dev dependencies i powiem ci jaka jest
różnica otóż nasz projekt będzie zależał od biblioteki jquery czyli
ona jest potrzebna żeby w ogóle go uruchomić powiedzmy natomiast nie
jest potrzebny jshint żeby nasz projekt uruchomić czyli jeżeli stworzymy gotową aplikację
komuś udostępnimy nie musi mieć jshint jshint służy do walidowania
kodu a więc jest nam przydatny podczas pracy nad taką biblioteką czy na
tym projektem dlatego nazywa się to development dependencies czyli zależności
deweloperskie tutaj możesz mieć różne rzeczy które są przydatne do pracy nad
takim projektem ale sam projekt już później nie zależy od tych dodanych
tutaj paczek jak zatem moglibyśmy taki jshint uruchomić gdybyśmy
byli tutaj to mogłeś wpisać node czyli tym poleceniem uruchamiam plik i następnie
node modules bin i tutaj powinno być jshint w ten
sposób ten plik można uruchomić i podać mu tutaj parametry chciałbym
zwalidować katalog js i plik scripts js który tutaj się
znajduje więc wpisałbym to w ten sposób i zobaczmy
jshint powiedziało nam
że mamy jeden błąd tak naprawdę tutaj jest jego komunikat
first name is already has already been declared widzimy że rzeczywiście ja
tutaj popełniłem błąd dlatego że first name mamy tutaj i próbowałem drugi raz utworzyć
taką stałą jak zatem widzisz że jest jshint może mi się przydać właśnie
podczas pracy ale nie później już podczas uruchomienia tej aplikacji i teraz
będę chciał ci pokazać jedną rzecz która nam pozwoli nie wpisywać takich
dziwnych ścieżek tylko od razu odwołać się do odpowiedniej paczki przejdziemy sobie do pliku package json
i zobacz że tutaj został utworzony taki domyślny skrypt test możemy
go całkowicie usunąć i w tym miejscu możemy tworzyć własne skrypty zauważ
że jest to plik jsonowy czyli dla nas javascriptowców łatwo się z tym
pracuje on jest uruchamiany w środowisku node js które też jest wykonywane
w obrębie jakby javascriptu czy język JavaScript jest tam wykonywany i tutaj
możesz sobie dodać dowolny skrypt jeżeli chciałbym dodać skrypt który
by się nazywał na przykład hint czyli sprawdź poprawność mógłbym
tak nazywać to jest dowolna nazwa tutaj to po dwukropku mogę podać co
ma być tutaj uruchomione czyli innymi słowy jeżeli w takim terminalu kiedykolwiek odpisywałeś ping
onet.pl powiedzmy to jeżeli chciałbyś taką komendę
wykonać z poziomu pliku package json to tutaj możesz taką komendę wpisać więc
my możemy tutaj wpisać dowolną komendę która będzie uruchamiana zobaczysz zaraz
w jaki sposób natomiast żeby nie wpisywać tego jshint w
taki sposób jak przed momentem czyli node modules bin i tak dalej to mogę
i od razu wpisać jshint czyli różnica jest taka że jeżeli
prosto z terminala chciałem sobie coś wpisać czyli skorzystać z zainstalowanego jshint
musiałem się do tego jakby to dogryźć natomiast jeżeli wpiszę tutaj w
script jshint to package json za moment kiedy zostanie uruchomiony
automatycznie będzie w katalogu node modules szukał w katalogu bin takiego
pliku wykonywalnego czyli tutaj nie muszę podawać całej takiej ścieżki ale
parametry sobie już podamy czyli chcemy walidować plik scripts js okej i
teraz jak taki skrypt uruchomić ma on nazwę hint więc będąc tutaj czyli
w miejscu gdzie mamy plik package json wpiszemy sobie npm run
tak zawsze będziesz wpisywał i teraz nazwa tego skryptu czyli hint
tak jak go nazywaliśmy i to zostanie uruchomione okej
zobaczmy no i widzimy rzeczywiście że efekt
jest ten sam chociaż nie pojawił się błąd ale jshint nie został
znaleziony z jakiegoś powodu okej ja już widzę że popełniłem błąd bo tutaj
powinno być jeszcze s być może to zauważyłeś sprawdzimy ras jeszcze npm run hint
okej i te błędy zignorujemy nie są istotne ale tutaj widzimy
błąd właśnie first name has already been declared czyli innymi słowy udało
nam się zwalidować nasz kod i to jest tylko taki prosty przykład ale pokazuje ci jak pracować
właśnie z npm czyli po pierwsze możesz instalować sobie różne zależności do
dependencies lub dev dependencies a po drugie możesz tworzyć skrypty co
jeszcze będziemy później robić na koniec pokażę ci jeszcze jedną rzecz otóż
mamy tutaj ten katalog note modules ja sobie go usunę wpisując
rm minus rf na Macu i na Linuxie takie polecenie działa i on
teraz zniknął czyli gdybym teraz chciał zrobić npm run hint to
powinniśmy mieć błąd nie mamy błędy tylko dlatego że ja mam globalnie zainstalowany jeszcze jshint no
i on został użyty normalnie mielibyśmy tutaj błąd natomiast dążę do tego że
jeżeli będziesz swój kod udostępniał komukolwiek to będziesz to robił bez katalogu
node modules czyli nie chcę mieć tego katalogu bo w nim może być mnóstwo plików one
nam są potrzebne co prawda do pracy czy do uruchomienia projektu ale
nie musimy ich mieć jeżeli chcemy komuś projekt udostępnić ważne żebyśmy mieli
plik package json i potem wpisywaliśmy save i save dev żeby
tutaj się w tych kluczach pojawiały odpowiednie paczki oraz ich wersja dzięki
temu jeżeli komukolwiek udostępnimy nasz projekt w którym nie ma katalogu node modules to
on przychodzi do tego miejsca gdzie jest package json i wpisuje npm install tyle
wystarczy i automatycznie wszystko co znajdowało się w pliku packages json zostanie
pobrane zobaczmy i pojawi się katalog node modules czyli ten
katalog nie służy do tego aby go komuś udostępniać albo aby coś w nim zmieniać możesz
sobie go dowolnie usunąć w dowolnym momencie a później wpisać npm
install i wszystko zostanie pobrane od nowa okej tak zatem wyglądają
podstawy pracy z npm mam nadzieję że było to w miarę zrozumiałe i w kolejnych
lekcjach będziemy sobie jeszcze tę wiedzę nadbudowywać więc zobaczysz jak praktycznie
to wygląda