• od 5lat pracuję zdalnie dla startupu Folium
Partners
• tworzymy oprogramowanie dla wydawców audio/
ebooków
• “Software engineer” : JavaScript, PHP (Symfony
2), Android, OS X / iOS
• kontakt: @DzikowskiW
Wojciech Dzikowski
3.
Agenda
1. Ewolucja JS
2.Założenia JavaScript i ES6
3. ES6 w praktyce (wybrane zagadnienia)
4. Pytania
4.
Słowniczek
• JavaScript (JS)- wysokopoziomowy, dynamiczny, nietypowany
interpretowany język wywodzący się z przeglądarek internetowych,
implementacja ECMAScript
• ECMA International - stowarzyszenie, które powstało w 1961 roku,
by ustandaryzować systemy informatyczne w Europie. Członkami
ECMA są wpływowe firmy informatyczne i telekomunikacyjne m.in.
Mozilla, Google, Yahoo, Microsoft
• ECMAScript (ES)- specyfikacja obiektowego skryptowego języka
programowania, którego najbardziej znane implementacje to
JavaScript, JScript i ActionScript. Specyfikacja ta oznaczona jest
jako ECMA-262
• ES2015 (ES6) - najnowsza specyfikacja ECMAScript
Lata 90.
• wojnyprzeglądarek IE vs Netscape
• DHTML i animacja wszystkiego
• walidacja formularzy
• zliczania odwiedzających (liczniki na stronach)
• kod optymalizowany pod poszczególne przeglądarki, mała
kompatybilność (IE vs Netscape)
2005: AJAX
• Internetszerokopasmowy staje się powszechny
• wykorzystanie asynchronicznych zapytań do serwera (AJAX)
staje się popularne
• renesans JavaScript
• wysyp frameworków (ułatwiających zapytania AJAX i
modyfikacje DOM)
2010-2015
• ewolucja frameworków,już nie tylko biblioteki do pracy
z DOM i AJAX
• menadżery pakietów JS: npm, bower
• rozwiązania do modularyzacji kodu (node.js,
CommonJS, AMD, Browserify)
• preprocesory JavaScript (Grunt, Gulp, Webpack,…)
12.
Teraz
• 2015: ECMAScript2015 (wiele nowości)
• od 2015 roku nowa specyfikacja wychodzi co roku,
dlatego też zmiana notacji
• połowa 2016: ES2016 (żadnych większych zmian)
JavaScript - zalety
•prosta składnia
• zaprojektowanie funkcji jako pełnoprawnych obiektów
• niezależny od żadnej firmy
• jedyny natywny język przeglądarek internetowych
• szybki rozwój języka i ekosystemu
• duża i aktywna społeczność
• wiele pomocnych narzędzi, bibliotek i frameworków
JavaScript - wady
•unikalna konstrukcja i zachowania prowadzą do
nieporozumień (np. obiekty i prototypy, zamiast
klas i instancji, nieznaczące zakresy blokowe,
hoisting, +, typeof null === ‘object’)
18.
JavaScript - wady
•brak jednoznacznych wytycznych i standardów
tworzenia czystego kodu (co framework to inna
filozofia, złe podejście może mieć skutki na lata)
• bardzo szybki rozwój utrudnia tworzenie dużych
aplikacji utrzymywanych długi czas, przy wyborze
złych narzędzi
19.
Założenia ES6
• rozwiązanie(części) problemów poprzedników
• kompatybilność wsteczna (kod ES5 jest
kompatybilny z ES6)
• nowoczesna składnia
• lepsze wsparcie dużych aplikacji
• dodana funkcjonalność do biblioteki
standardowej
20.
ES6 - stanna dzisiaj
kangax.github.io/compat-table
ES6: Promise (obietnica)
•obiekt trzymający stan wywołania asynchronicznej funkcji (oczekujący,
spełniony, odrzucony)
• poprawia wcześniejszy problem z listenerami, wywołując funkcję callback
nawet jeśli funkcja asynchroniczna zakończyła wcześniej działanie
• pozwala na zwracanie obiektów (Promise) niezależnie od tego kiedy
skończy działanie funkcja asynchroniczna (lepsza czytelność kodu)
• “obiecuje”, że przekaże wynik lub błąd wywołania asynchronicznej funkcji
• korzysta z wzorca Obserwator do rozgłaszania wyniku zainteresowanym
• serializuje zagnieżdżone funkcje asynchroniczne, poprawiając czytelność
kodu
Moduły (ES5)
• IIFE(Immediately Invoked Function Expression)
• nie zaśmieca zakresu globalnego
55.
Moduły (ES6)
• wykorzystajnarzędzia typu Browserify / Webpack,
• natywne moduły w przeglądarkach w trakcie
implementacji
56.
Podsumowanie
• let/const
• templatestrings
• nowe sposoby deklarowania obiektów
• klasy
• map, filter, reduce (ES5)
• arrow functions
• for … of
• Promises
• Moduły
57.
Pozostałe zagadnienia ES6
•Proxy
• Iteratory
• Generatory
• Symbol
• Map/Set, WeakMap/WeakSet
• rozszerzone standardowe API (Number, Math, Array)
58.
Podsumowanie
• korzystaj ztranspilatorów (Babel) aby korzystać z
ES6 w każdej przeglądarce
• ucz się zagadnień ES6 krok po kroku, nie trzeba od
razu znać wszystkiego
• większość nowości to tzw. syntactic sugar, ale
często bardzo przydatny, korzystaj z rozwagą
• ES6 jest teraźniejszością, warto go znać