Zaawansowane programowanie w Javascript

Warsztat skupia się na współczesnych standardach języka JavaScript oraz technikach, które pozwalają pisać wydajny, czytelny i zrównoważony kod. Uczestnicy przeanalizują zaawansowane aspekty pracy z funkcjami, klasami, modułami oraz asynchronicznością, a także poznają wzorce i antywzorce stosowane w codziennej pracy programistycznej. W trakcie praktycznych ćwiczeń omówimy techniki optymalizacji kodu, debugowanie trudnych przypadków oraz sposoby budowania architektury modularnej. Po szkoleniu uczestnicy potrafią świadomie wykorzystywać pełnię możliwości nowoczesnego JavaScriptu w projektach o różnej skali.

Program

Bezpieczne i wydajne programowanie w JavaScript

  1. Specyfikacja/standard języka
  2. Poprawne i efektywne ładowanie skryptów
  3. Debugowanie kodu w przeglądarce
  4. Praca w trybie strict
  5. Prawidłowe deklarowanie i użycie zmiennych oraz stałych
  6. Porównywanie i bezpieczna konwersja typów
  7. Funkcje, domknięcia oraz ich zastosowanie w codziennej pracy
  8. Kontekst wykonania, zasięg zmiennych i znaczenie referencji this
  9. Programowanie obiektowe z wykorzystaniem podejścia prototypowego
  10. Mix-ins jako alternatywa dla klasycznego dziedziczenia
  11. Obsługa wyjątków

Nowoczesny JavaScript (nowości od ES6/ES2015 w górę)

  1. Transpilacja kodu i kompatybilność między przeglądarkami
  2. Arrow functions
  3. Parametry funkcji (wartości domyślne, spread, varargs)
  4. Interpolacja tekstu oraz szablony
  5. OOP - deklaracja klas i ich składników, computed properties, dziedziczenie, elementy statyczne, getters/setters, kontrola dostępu
  6. Destrukcja (obiekty, tablice, parametry funkcji)
  7. Nullish coalescing
  8. Praca z modułami
  9. Symbole
  10. Genratory i iteratory
  11. Kolekcje
  12. Podsumowanie istotnych nowości i planowanych zmian

Asynchroniczność

  1. Callbacks
  2. Promises
  3. Async/await
  4. Wprowadzenie do RxJS

Programowanie w stylu funkcyjnym

  1. Czyste funkcje
  2. Niezmienność
  3. Transparentność referencyjna
  4. Rekurencja
  5. Funkcje wyższego rzędu
  6. Pattern matching
  7. Kompozycja, currying i częściowa aplikacja funkcji
  8. Memoization
  9. Algebraic Data Types
  10. Wprowadzenie do koncepcji Type classes - Functors, Applicatives, Monads, Traversables
  11. Zastosowanie popularnych typów monad: Maybe, Either, Validation, Reader
  12. Efekty uboczne i interakcja ze środowiskiem zewnętrznym