To już 26-te nasze spotkanie! Mi jako organizatorowi jest bardzo miło “gościć” tyle osób, które bez przymusu, z chęcią przychodzą w drugą środę miesiąca do Państwomiasto, aby posłuchać ciekawostek, nowinek, dobrych praktyk w języku JavaScript.
Invitation
Zaproszenie dość szczególne. Dostałem od mojego działu drona-zabawkę. Chciałem go wykorzystać aby dodać czegoś nowego do naszych zapowiedzi. Może i dron-zabawka, ale świat z 4-5 metrów wygląda inaczej.
Ciężko mi było w te kilka minut lotu nagrać jakieś ciekawe ujęcie. Dodałem do zapowiedzi te, które wyszły najlepiej, czyli najstabilniej.
Zapraszam w imieniu organizatorów WarsawJS.
•
Talk #1: Web Components. Are we there yet? [PL] Dominik Lubański
Elementy w HTML mogę być: Semantyczny, funkcjonalny, czy też wizualny. Dominik Lubański. 2016-10-12
Elementy mogą być definiowanie deklaratywne, czyli zapisanie w pliku HTML.
Komunikacja z API elementów, które są bardziej skomplikowane i posiadają swoje metody może polegać na uruchomieniu imperatywnym (rozkazującym).
4 specyfikacje w połączeniu definiują Web Component-y:
- Shadow DOM
- Custom Elements
- Templates
- HTML Imports
Shadow DOM uruchamiamy imperatywnie. Nie możemy deklaratywnie stwierdzić, że element gdzieś ma Shadow DOM. Dominik Lubański. 2016-10-12
(Aktualizacja 2026: HTML Imports usunięto z przeglądarek - Chrome wycofał je
w wersji 73 - a od 2024 roku wszystkie główne przeglądarki obsługują
Declarative Shadow DOM, czyli <template shadowrootmode="open">.)
Specyfikacja Templates daje programistom definiowania kontenerów <template>, które nie są wyświetlane, a ich zawartość leży w nieaktywnym DocumentFragment (nie jest częścią żywego drzewa DOM).
Dominik serdecznie zachęca do wykorzystania Web Components, aby zunifikować biblioteki, które tworzą UI.
- Link do prelekcji: youtube.com/watch?v=2YEE5W8HdKk
•
Talk #2: Kind of JavaScript [EN] Mariusz Nowak
Dobra organizacja wartości w JSie zakłada podział na:
- Immutable
- Primitive non-value
undefinednull
- Primitive value
numberbooleanstringsymbol
- Primitive non-value
- Mutable
Różnica między null a undefined w JavaScript?
null- jest wartością, która mówi, że nie ma wartościundefined- mówi, że nie ma wartości, nie ma klucza, nie ma niczego
Dobra praktyka
Usuwanie klucza z obiektu powinno odbywać się poprzez nadpisanie wartości null-em, zamiast wykorzystywać operator delete.
obj.foo = null; // Good practice ✔
delete obj.foo; // Bad practice ✖
Uwaga: przypisanie null nie usuwa klucza, tylko zmienia jego wartość.
Klucz dalej widzą 'foo' in obj, Object.keys(obj) i JSON.stringify(obj).
Ta rada dotyczy wydajności (silnik JS nie musi zmieniać “kształtu” obiektu),
więc warto ją stosować w gorących miejscach kodu. Jeśli klucz naprawdę ma
zniknąć, np. przed wysłaniem obiektu do API, potrzebny jest delete.
Mariusz wytłumaczył jak działa Object Boxing, czyli dlaczego prymitywy mają właściwości. Kolejne dwa terminy, które po prelekcji będą dla nas jasne, to:
Type Coercion- niejawna konwersja typów, to poważny temat. Przy pracy z językiem, stykamy się z koercją w wielu miejscach. Ważne jest zrozumienie tego mechanizmu i zapoznanie się np. Falsy Values.Duck Typing- czyli, porównywanie obiektu, na podstawie jego zawartości, np. czy posiada właściwości takie jak?
- Link do prelekcji: youtube.com/watch?v=fQIvfgrjGSE
•
Talk #3: Angular 2 quickstart, Angular 2 automated unit testing [PL] Robert Gurgul
Ze względu na to, że aplikacje tworzone w oparciu o framework Angular 2 tworzone są w TypeScript, to będzie istniała pewna różnica między środowiskami developerskimi projektów opartych na Angular 1 (starym) oraz Angular 2 (nowym). Elementem tym będzie transpilator.
Robert podczas prelekcji pokazał narzędzie angular-cli - narzędzie automatyzując oraz standaryzujące budowanie aplikacji Angularowych.
Ostatnio zastanawiałem się nad tym “dlaczego w ogóle lubię programować?”
Lubię programować, bo lubię widzieć co zrobiłem. Gdy napiszę fajny kod, lubię sprawdzić czy on działa. Robert Gurgul. 2016-10-12
Robert poleca jazdę pociągiem, bo wtedy ze względu na brak internetu możemy pisać testy. Dobre testy to takie, które mock-ują całą komunikację z serwerem, więc faktycznie nie potrzebujemy internetu do dopisania do naszej aplikacji kilkunastu testów. W pełni się z tym zgadzam. Swoją drogą, żyjemy w XXI wieku i w większości pociągów dalekobieżnych dalej nie ma sieci Wi-Fi. Ciekawe czy nasze dzieci będą kiedykolwiek w takiej sytuacji.
- Link do prelekcji: youtube.com/watch?v=2lhmK60hQGY
•
Sponsorzy spotkania
- 10Clouds - żetony w barze
- Cyfrowy Polsat - materiały na YouTube
- Whitestream - transmisja na żywo - warsawjs.com/live
- Softwarely - dodatkowe wsparcie
Cya! 👋