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 pokażę ci, w jaki sposób korzystać z plików źródłowych, które przygotowałem do tego
kursu dlatego, że stworzyłam swoją rodzaju aplikację, która te pliki źródłowe będzie nam
serwować i między innymi pozwoli nam automatycznie odświeżyć przeglądarkę za
każdym razem, kiedy zmienimy coś jakąś pliku JavaScript'owym albo w pliku HTML, więc
żeby to wszystko mogło działać potrzebujemy środowiska Node.js, jeżeli jeszcze go nie masz
to udaj się na stronę nodejs.org i pobierz sobie instalator, najlepiej
z najnowszą wersją, która jest tutaj po prawej stronie, ale wersja LTS czyli Long Term
Support również powinna bez problemu działać. Ja jestem w systemie Mac,
ale będzie to działać też w Linuxie czy w Windowsie i tutaj odpowiedni instalator powinien się
pojawić automatycznie, jeżeli nie, to tutaj w other downloads będziesz mógł to
znaleźć. Instalator jest prosty na zasadzie next, next i tak
dalej, więc na pewno sobie poradzisz i po instalacji proponuję jeszcze zrestartować
sobie system, chociaż nie powinno to być konieczne, ale zazwyczaj najlepiej jest to zrobić,
więc jeżeli masz już środowisko Node. Jeżeli nie wiesz czym ono jest, to też zupełnie
się nie przejmuj, po prostu je zainstaluj. Jeżeli je już masz, to będziemy musieli się
udać do terminala czy też do wiersza poleceń. Jest to takie okienko konsoli
systemowej. Gdybyś, z kolei z nim nie był zaznajomiony to polecam ci na eduweb.pl,
pod takim adresem podstawy korzystania z terminala na blog.eduweb.pl, obejrzeć
sobie wprowadzenia, które zrobiłem. Są to darmowe filmiki, gdzie pokazuje jak
w systemie Windows pracować z wierszem poleceń oraz jak robić to w systemie Mac OS, gdzie
komendy również będą działać w systemie Linux. Nie jest to trudne i na potrzeby tego
kursu nie będziesz potrzebował wykorzystywać więcej niż kilku komend. Zaraz
to wszystko będę chciał ci w terminalu pokazać, natomiast pokazuje ci, że masz możliwość jeszcze
przyjrzenia się temu na różnych przykładach, gdybyś chciał się tego nauczyć, więc
kiedy mamy już środowisko Node, to będziemy mogli się udać do terminala i na
razie pokażę jak to zrobić na Macu. Jeżeli jesteś tutaj na pulpicie, czyli w Finderze możesz
kliknąć I i następnie tutaj Utilities albo Narzędzia i jest tutaj
coś takiego jak terminal, to jest to okienko, w którym możemy wykonywać polecenia, możesz
tutaj je wpisywać. Natomiast ja korzystam z programu iTerm, który
jest taką nakładką na terminal, więc będę to wpisywał tutaj, ale możesz w tym białym
okienko również to zrobić i teraz to co pokaże w systemie Windows będzie wyglądać
identycznie, chociaż zaraz do tego systemu też przyjdziemy. Wpiszemy sobie cd i
postawimy spację i następnie kiedy rozpakujesz pilki źródłowe tego
kursu, znajdziesz w nich katalog app, który widzisz tutaj. Przejdź do tego katalogu
i mamy tutaj dwa katalogi, system, w którym nie powinieneś nic zmieniać oraz
examples i tutaj będziemy pracować na przykładach. Tenkata log system
przeciągniemy sobie tutaj po spacji i ścieżka nam się tutaj uzupełni i wystarczy
wcisnąć enter i przeszliśmy do tego katalogu jakby w terminalu. Kiedy
wpisz ls, a w Windowsie będzie to polecenie dir, to pokaże mi się lista
plików, które się tutaj znajdują i istotny jest plik package.json, który
pozwoli nam zainstalować wszystkie zależności. Natomiast jeżeli zainstalowałeś
Node, to aby sprawdzić czy działa, to możemy wpisać w dowolnym miejscu w tej konsoli,
nawet gdybyśmy tutaj nie przeszli Node spacja dwie kreski version. Jeżeli
nam zwróci wersję, tak jak w tym przypadku, to spróbujmy wpisać jeszcze npm
version. Jeżeli też zwraca wersję, to znaczy, że i Node i npm działają
poprawnie i będziemy mogli sobie te zależności z package.json zainstalować.
Jeżeli nigdy nie pracowałeś z Node, po prostu zrób to wszystko, co ja zrobiłem, czyli
po prostu cd, przeciągasz katalog, wciskasz enter. Nie musisz
tych poleceń wpisywać, one tylko na początku, żeby sprawdzić czy wszystko działa, ale
załóżmy, że działa, to wpisujesz cd, mamy tutaj ścieżkę i będąc
jakby w tym katalogu wpisujemy npm install i to musisz zrobić tylko
raz i dzięki temu wszystkie zależności wylistowane w pliku package.json
się pobiorą z internetu i będzie tutaj nowy folder Node modules, w którym one
się pojawią. To zrobisz raz, a później już będziesz mógł tą aplikację uruchamiać,
co zaraz ci pokażę. Po chwili wszystkie te zależności
się zainstalowały, więc ja sobie wyczyszczę ekran wpisując clear. W Windowsie jest to polecenie cls
i będziemy mogli napisać raz jeszcze ls lub
dir, żeby zobaczyć, że katalog Node modules tutaj się pojawił i teraz, aby uruchomić naszą
aplikację wystarczy wpisać npm start. Tyle wystarczy
wpisać, czyli to, co zrobiliśmy do tej pory wystarczy zainstalować raz,
a później zrobić npm start, więc jeżeli ci się to wszystko uda zainstalować,
to chcę ci teraz pokazać od nowa, jak za każdym razem będziesz uruchamiał tą aplikację,
kiedy będziesz chciał pracować z tym kursem. Wchodzisz sobie do terminala, tak
jak pokazałam przed momentem lub na przykład w programie iTerm, wpisujesz cd
i przeciągasz tutaj katalog system. Wciskasz
enter. Oczywiście nie postawiłem jeszcze spacji wcześniej, więc napiszmy
cd spacja, to jest ważne przeciągamy system. Wciskam
enter i teraz wpisujemy npm start. Zakładam, że wcześniej jednorazowo
wpisałeś npm install i wszystko się pobrało. Teraz wystarczy npm start i nasza
aplikacja powinna się uruchomić. Zauważ, że tak się stało i w tym miejscu pojawi
ci się adres pod możesz otworzyć w przeglądarce nasz serwer. Bardzo
istotna rzecz, bo ten port u ciebie teoretycznie może być inny, więc teraz przejdźmy sobie
do Canary, do przeglądarki i wpiszę ten adres. Zauważ,
że nasza aplikacja się uruchomiła od razu na przykładzie pierwszym i jeżeli będziesz
chciał przejść do kolejnych przykładów, na początku każdej lekcji będziesz widział jaki adres ja mam
na pasku, to po prostu je tutaj wpiszesz. Będziesz mógł pisać 02, 03
i tak dalej. Wrócimy sobie jednak do pierwszego i pokażę ci teraz
jak to wygląda w plikach. Mamy uruchomiony już taki serwer, a kiedy sobie otworzymy
katalog examples w edytorze kodu, co ja zrobiłem tutaj, to
zobaczysz, że mamy w nim właśnie katalogi dla wszystkich plików źródłowych i na
przykład w pierwszej lekcji jeżeli sobie otworzysz film zobaczysz że ja mam tutaj 01, to
oznacza, że pracujemy w examples na katalogu 01. W każdym
z nich znajdziesz finish. Jest to wersja skończona aplikacji z danej lekcji
czy danego przykładu oraz start, od których ja zawsze zaczynam. Czyli, jeżeli
chcesz pracować razem ze mną to zaczynasz sobie start. Każdy
z nich ma plik scripts, w którym będziemy pisać oraz index.
Natomiast w niektórych przypadkach nie korzystamy z tego pliku index, bo nie jest nam
konieczny. Niemniej jednak, zauważ co jest na stronie. Nie ma tutaj nic więcej,
natomiast gdybyśmy w tym pliku wpisali sobie h1 Witaj i zapisze, to
przeglądarka automatycznie się odświeży, ten plik eml html wstawiając w to
miejsce, czyli jeżeli będziemy potrzebowali dla jakiegoś przykładu dodać jakiś dodatkowy html, to będziemy
go wstawiać w takim pliku i jak widzisz, nie mamy tutaj całego nagłówka czy stopki. Wszystko
będzie wstawione automatycznie. Natomiast, ciekawe jest również w pliku scripts, bo
jeżeli tutaj sobie wpiszę alert Witaj i zapisze to
przeglądarka automatycznie się odświeży i wyświetli ten alert
i zauważ również, że tutaj zostanie wczytana treść naszego skryptu. Po
to, abyś mógł go po prostu podejrzeć. Jeżeli skrypt będzie zbyt długi, to automatycznie
będzie ukryty i będziesz mógł go pokazać. Natomiast, jeżeli jest krótki. to będzie
jego podgląd tutaj wczytywany, czyli w każdej lekcji będziemy sobie pracować w pliku scripts,
kiedy go zapiszesz, automatycznie wszystko odświeży się w przeglądarce i będziemy
widzieć rezultaty swojego kodu. Jeżeli natomiast będziesz chciał przyjść
do wersji skończonej z danej lekcji, to do adresu dopisz sobie ukośnik finish i
zobaczysz jak będzie wyglądał skrypt już gotowy właśnie
z tego konkretnego przykładu. Jeżeli będziesz chciał wyszukać sobie przykładów,
to tutaj jest wyszukiwarka i powiedzmy, że ten przykład nazywał się słowo var i hoisting,
to wpiszmy sobie var i zauważ, że zostało to znalezione i możemy tutaj
kliknąć, co od razu przenosi nas do wersji skończonej czyli finish.
Myślę zatem, że już widzisz jak z tym pracować. Na początku każdej lekcji zobaczysz
na pasku, że mam adres na przykład 01 czy 03, przechodzisz pod taki sam adres.
No i możesz sobie już na tym pracować, otwierasz również examples 01 i w
ten sposób możesz tutaj pracować na skrypcie czy na pliku index, które są
automatycznie dołączone do strony, więc ja sobie teraz usunę ten alert, żeby
nam się już tutaj nie pojawiał. No i na tym będziemy mogli zostawić ten
przykład, bo od niego będziemy w lekcji zaczynać później. Zanim jeszcze pokażę
jak to samo zrobić systemie Windows, to chciałbym ci powiedzieć jeszcze o jednej bardzo ważnej rzeczy. Gdyby z
jakichś powodów ta aplikacja nie chciała ci się uruchomić, bo wróćmy sobie tego okienka.
Zauważ, że ja go nie zamknąłem i to jest ważne, abyś go nie zamykał po uruchomieniu
tego serwera, to jeżeli się nie będzie chciało uruchomić, to można zmienić
port, co będę chciał ci teraz pokazać. Natomiast, jeżeli już jest ten serwer uruchomiony i
chciałbyś go zatrzymać, to masz tutaj komunikat, że robimy to wciskając Control C
i w Mac'u i w Windowsie Control C. Zakończył się ten proces
i nasz system przestanie działać, więc jeżeli chcesz jeszcze raz uruchomić,
wpisujesz npm start. Raz jeszcze się wszystko uruchomi i i ten
serwer znowu zacznie działać. Natomiast ja go teraz zatrzymam i gdybyś wpisał
npm start i ta aplikacja by się nie chciała uruchomić, byłyby jakieś błędy, to
być może port, na którym ją uruchamiany jest u ciebie w systemie zajęty. Jeżeli tak
by się stało, to przyjdź sobie do folderu system i następnie
do pliku index.js. Ogólnie nie polecam, żebyś cokolwiek w nim zmieniał.
Natomiast, jeżeli byłby problem z portem, to możesz tutaj zmienić jego wartość na
przykład na 8000. Natomiast jeżeli tutaj byś to zrobił, to musisz
przejdziesz do pliku gulpfire i tutaj również zmienić ten port na 8000,
czyli w tych dwóch miejscach, jeżeli zmienisz port, to na takim porcie będzie uruchamiana nasza
aplikacja. Zauważ, że jeżeli ja ją uruchomię, to ona się uruchamia na porcie
w tym przypadku 301 dlatego, że tutaj będzie port
o 1 większy, niż ten, który podamy bo serwer uruchamia się tak naprawdę
na porcie 3000, który mamy podany, ale taka nakładka browser-sync,
która pozwala nam między innymi automatycznie odświeżać przeglądarkę uruchamia się na porcie
3001, więc jeżeli zmienisz tutaj na 8000, serwer
pod spodem będzie uruchomiony na 8000, a browser-sync na, tak
naprawdę porcie 8001. Możemy też przejść pod taki adres i aplikacja
działa tak samo, tylko teraz nie będzie automatycznie odświeżana. Dlatego tutaj pod spodem jest
uruchomiony serwer, a na nim jeszcze taka nakładka, czyli generalnie przejdź w przeglądarce
pod adres, który pojawia się w tym miejscu. Okej, teraz przejdźmy sobie
jeszcze do systemu Windows i pokażę ci również jak to możemy tam uruchomić, ale będzie
to wyglądać niemalże identycznie. Jesteśmy w systemie Windows i tutaj
wiersz poleceń można uruchomić tak jak w tych darmowych tutorialach, które ci linkowałem wcześniej,
pokazywałem, ale pokażę teraz jeszcze. Wystarczy, że tutaj przyjedziesz sobie pod
tą lupę i wpiszesz cmd i wiersz poleceń będzie znaleziony. Klikniemy
go, aby tutaj przejść i jeżeli poprawnie zainstalowałeś Node instalatorem, to możesz
pisać node dwie kreski version. Powinno zostać zwrócone oraz npm version
również, czyli tak możemy to po prostu sprawdzić i teraz będziemy chcieli sobie
tę aplikację uruchomić. Jak widzisz wersja została zwrócona. Poleceniem
cls mogę wyczyścić ekran. Natomiast teraz wpisze cd, postawie spację i
przejdę do tego katalogu oraz przeciągnę sobie tutaj również katalog system.
Ścieżka nam się uzupełnij, mogę wcisnąć enter i przeszliśmy sobie
do tego katalogu. Tutaj wpiszemy jednorazowo wyłącznie npm install
i wszystkie zależności pobiorą się z internetu i za moment sobie
aplikację będziemy mogli uruchomić okej i po dłuższej chwili
wszystko się zainstalowało, więc mogę wyczyścić ekran wpisując cls. Pamiętaj,
że to instalacja tym poleceniem przed momentem jest tylko raz, więc może od nowa, pokażę
ci jak będziesz to uruchamiał. Jeżeli przejdziesz sobie do tego kursu, czyli będziesz
chciał z nim pracować, przejdziesz sobie tutaj, wyszukasz cmd. Przechodzimy
do wiersza poleceń, wpisujemy cd spacja i przeciągamy katalog
system, który znajduje się tutaj w katalogu app w plikach źródłowych. Wciskamy
enter i teraz wystarczy wpisać npm start i nasza aplikacja
powinna się poprawnie uruchomić. Zobaczmy. Tutaj mam
jeszcze pytanie o zaporę ogniową, możemy dać zezwalaj na dostęp, akurat nie
ma to tutaj znaczenia i zauważ, że uruchomiła się nasza aplikacja pod jakim adresem. Ja to
sobie skopiuję Control C i przejdziemy do przeglądarki. Nie
zamykam tego czarnego okienka, jest to bardzo ważne i teraz Control V, wklejam sobie ten adres i
nasza aplikacja powinna się uruchomić, jak widzisz. Tak też się stało, więc
teraz jeżeli będziesz pracował i zmieniał coś w pliku w tym przykładzie tutaj w 01.
No to tutaj wszystko będzie automatycznie odświeżane. Jak widzisz, to jest takie proste, a
kiedy będziesz chciał zakończyć serwer, wciśniesz tutaj Control C i wtedy możesz
jeszcze nacisnąć Y, bo tutaj nas o to zapytało i nacisnąć
po prostu X i to wszystko zamknąć, wtedy ten serwer po prostu przestanie działać. To zatem wszystko
tytułem korzystania z plików źródłowych, mam nadzieję, że to jest jasne. No i już od
kolejnych lekcji będziemy zacząć poznawać EcmaScript 6.