Polymer i komponenty internetowe to ostatnio bardzo popularne tematy, a ponieważ ten ekosystem rozwija się bardzo szybko, deweloperzy często mają problemy z utrzymywaniem się na bieżąco ze wszystkimi najnowszymi zmianami.
Podczas Chrome Dev Summit Matt McNulty, menedżer ds. inżynieryjnych w zespole Polymer, wyjaśnił, czym jest Polymer, i przedstawił plan rozwoju Polymer 1.0.
Czym jest Polymer?
Na początek: czym dokładnie jest Polymer?
Polymer to biblioteka ułatwiająca tworzenie elementów i aplikacji z komponentów internetowych. Komponenty internetowe to najnowszy zestaw nowych standardów, który pozwala deweloperom rozszerzać słownictwo HTML o własne elementy niestandardowe.

Komponenty internetowe są zaprojektowane jako nowy element podstawowy dla przeglądarki, co oznacza, że są bardzo wydajne, ale też bardzo niskie, a praca z nimi wymaga sporo kodu.

Polymer ułatwia pracę z komponentami internetowymi dzięki „upiększeniu” składni. Zmniejsza ilość powtarzającego się kodu, który trzeba napisać, i dodaje styl deklaratywny, dzięki czemu tworzenie komponentów internetowych jest tak proste jak pisanie kodu HTML.
Polimerowy eksperyment
Polymer powstał jako eksperyment mający na celu sprawdzenie, czy uda się nam zastosować polyfill do standardów komponentów internetowych i uzyskanie opinii od deweloperów, zanim te technologie zostaną udostępnione we wszystkich przeglądarkach. Wraz z tym, jak coraz więcej programistów zaczęło używać Polymer, biblioteka przekształciła się z tego, co było tylko polyfillem, w prawdziwą bibliotekę pełną funkcji zwiększających produktywność (wiązanie danych, obserwowanie zmian atrybutów, automatyczne znajdowanie węzłów itp.). Ale wszystkie eksperymenty dają wyniki, więc jak nam poszło?

Wielu deweloperów twierdzi, że podoba im się możliwości i produktywność, jakie daje praca z elementami webowymi w Polymerze, ale mają też obawy dotyczące wydajności i ogólnej złożoności.
To pokazuje naturalne napięcie, które towarzyszyło Polymerowi od samego początku: być eksperymentem, który rozwija platformę internetową, ale też tworzyć coś, co nadaje się do wdrożenia i na co deweloperzy mogą polegać.
Nadchodzące zmiany
Zespół Polymer dokładnie przeanalizował wszystkie funkcje biblioteki, aby stworzyć szczuplejszą wersję gotową do wdrożenia, którą deweloperzy będą mogli śmiało używać.
Warstwy
Polymer został przebudowany w serię warstw. Podstawowe funkcje są szybkie i nieskomplikowane, a zaawansowane funkcje będą wymagały rejestracji. W większości przypadków funkcje podstawowe powinny spełniać potrzeby deweloperów.

Uproszczone wiązanie danych
System wiązania danych w Polymer został też znacznie zoptymalizowany pod kątem wydajności. Zgodnie z podejściem warstwowym wiązanie dwukierunkowe wymaga teraz wyrażenia zgody, a domyślnie stosowane są wiązania jednokierunkowe. Ponadto opublikowane typy właściwości zostały wyraźnie określone, a zmiana właściwości powoduje teraz wywołanie zdarzenia, co ułatwia komunikację elementów z różnych bibliotek.

Zwinne cienie DOM
Rozszerzenie do obsługi interfejsu Shadow DOM to niesamowity wyczyn inżynieryjny. Został on zaprojektowany tak, aby był kompleksowy i zgodny ze specyfikacją, co jest ważne dla dokładnego testowania platformy, ale niestety powoduje pewne problemy z wydajnością w przypadku funkcji, których Polymer nie używa.
W następnej wersji Polymer zastosujemy inne podejście, wykorzystując warstwę typu shim, która wypełnia tylko te elementy, których potrzebuje Polymer.

Istniejące rozwiązania zastępcze będą nadal działać w przypadku ogólnych komponentów internetowych innych niż Polymer.
Przenoszenie do webcomponents.org
A propos polyfillów: również one mają nową lokalizację. Obecnie wielu deweloperów ma problemy ze zrozumieniem relacji między Polymer a Web Components. Niektórzy uważają, że do korzystania z komponentów internetowych trzeba używać całej biblioteki Polymer, podczas gdy w rzeczywistości wystarczy tylko polyfill.
Aby wyraźniej zaznaczyć to rozróżnienie, przenosimy polyfille do witryny webcomponents.org i zmieniamy ich nazwę na webcomponents.js
.

Ma to pomóc innym autorom bibliotek korzystać z polyfillów bez żadnych problemów. Zespół Polymer będzie nadal rozwijać polyfille, ale mamy nadzieję, że ta zmiana sprawi, że staną się one bardziej przydatnym zasobem dla społeczności.
Wyniki
Jakie są wyniki po wprowadzeniu tych zmian?
Szybkość
W Chrome framework Polymer jest teraz 5 razy szybszy, a w Safari 8 razy szybszy.

Rozmiar pliku
Rozmiar pliku został również zmniejszony o 87%, z 123 KB do 15 KB (6 KB w formacie skompresowanym).

Plan działań
W następnej wersji pojawią się zmiany API powodujące niezgodność, co oznacza nowy numer wersji (0.8), ale zespół chce podkreślić, że nie jest to wersja przebudowana. Przeniesienie bieżącego projektu z wersji Polymer 0.5 do 0.8 powinno być dość proste.
Zespół Polymer przedstawił też plan rozwoju, aby pomóc deweloperom w lepszym zrozumieniu nadchodzących wersji.

Wersja 0.8 w wersji podglądowej jest już dostępna jako gałąź na GitHubie (chociaż nadal jest intensywnie rozwijana i brakuje jej dokumentacji). Wersja beta 0.9 jest planowana na I kwartał 2015 r., a wersja 1.0 – na II kwartał.
Eksperyment zakończony
Dzięki ostatnim zmianom w Polymer zespół odpowiedzialny za ten projekt tworzy podstawy, które pozwolą na to, aby komponenty internetowe stały się integralną częścią środowiska programistycznego każdego dewelopera. Jeśli dopiero zaczynasz korzystać z komponentów internetowych, teraz jest dobry moment, aby zapoznać się z tymi przełomowymi technologiami. Jeśli korzystasz już z komponentów (i z Polymer), przyszłość wygląda naprawdę obiecująco. Aby być na bieżąco ze wszystkimi nowościami, obserwuj blog Polymer. Jeśli masz pytania lub komentarze, zasubskrybuj listę mailingową Polymer. Udanego hakowania!