Polymer und Webkomponenten sind seit Kurzem sehr aktuelle Themen. Da sich dieses System schnell entwickelt, kann es für Entwickler oft schwierig sein, über die neuesten Änderungen auf dem Laufenden zu bleiben.
In seinem Gespräch auf dem Chrome Dev Summit erklärte Matt McNulty, Engineering Manager des Polymer-Teams, was Polymer ist, und seine Roadmap für Polymer 1.0.
Was ist Polymer?
Was genau ist Polymer eigentlich?
Polymer ist eine Bibliothek, mit der Sie Elemente und Apps aus Webkomponenten erstellen können. Webkomponenten sind hochmoderne neue Standards, die es Entwicklern ermöglichen, das HTML-Vokabular durch eigene benutzerdefinierte Elemente zu erweitern.
Da Webkomponenten als neue Primitive für den Browser konzipiert sind, bedeutet dies, dass sie sehr leistungsfähig sind, aber auch auf sehr niedrigem Niveau. Die Arbeit mit ihnen erfordert ziemlich viel Code.
Polymer vereinfacht die Arbeit mit Webkomponenten, indem die Syntax so unterlegt wird. Es reduziert die Menge an Boilerplate-Code, die Sie schreiben müssen, und fügt einen deklarativen Stil hinzu, sodass das Erstellen von Webkomponenten genauso einfach ist wie das Schreiben von HTML.
Das Polymer-Experiment
Polymer begann als Experiment, um zu testen, ob wir die Web Component-Standards Polyfill verwenden können, um Feedback von Entwicklern zu erhalten, bevor diese Technologien in allen Browsern veröffentlicht wurden. Als immer mehr Entwickler Polymer verwendeten, wurde es von Polyfills zu einer echten Bibliothek mit vielen Produktivitätsfunktionen (Datenbindung, Attributänderungs-Watcher, automatische Knotensuche usw.). Aber alle Tests haben Ergebnisse. Wie haben wir abgeschnitten?
Viele Entwickler fanden zwar die Ausdruckskraft und Produktivitätssteigerungen, die sich durch die Arbeit mit Webkomponenten in Polymer ergeben, aber sie äußerten auch Bedenken in Bezug auf Leistung und Komplexität.
Es zeigt eine natürliche Spannung, die Polymer schon immer hatte: Er sollte ein Experiment sein, um die Webplattform voranzutreiben, aber auch etwas produktionsgerechtes Format zu schaffen, auf das sich die Entwickler verlassen können.
Anstehende Änderungen
Das Polymer-Team hat sich alle Funktionen der Bibliothek genau angesehen, um eine schlankere, produktionsreife Version zu entwickeln, die Entwickler problemlos einsetzen können.
Ebenen
Polymer wurde in eine Reihe von Schichten refaktoriert. Die Hauptfunktionen sind schnell und schlank. Die erweiterten Funktionen müssen aktiviert werden. Bei den meisten Anwendungsfällen sollten die Kernfunktionen die Anforderungen der Entwickler abdecken.
Vereinfachte Datenbindung
Das Datenbindungssystem von Polymer wurde ebenfalls erheblich für die Leistung optimiert. Gemäß dem mehrschichtigen Ansatz ist die bidirektionale Bindung jetzt aktiviert. Standardmäßig sind unidirektionale Bindungen aktiviert. Außerdem wurden veröffentlichte Property-Typen explizit gemacht und eine Property-Änderung löst jetzt ein Ereignis aus, um die Kommunikation von Elementen aus verschiedenen Bibliotheken zu erleichtern.
Schlankeres Schatten-DOM
Der Shadow DOM-Polyfill ist eine erstaunliche Meisterleistung. Sie wurde so konzipiert, dass sie umfassend und spezifikationskonform ist, was für das gründliche Testen der Primitiv-Plattform der Plattform wichtig ist, aber leider eine Reihe von Leistungsengpässen für Funktionen mit sich bringt, die Polymer nicht verwendet.
Die nächste Version von Polymer verfolgt einen anderen Ansatz und verwendet eine Shim-ähnliche Schicht, die nur die für Polymer benötigten Polymere füllt.
Das vorhandene Polyfill bleibt für allgemeine Nicht-Polymer-Webkomponenten aktiviert.
Wechsel zu webcomponents.org
Apropos Polyfills: Auch diese bekommen ein neues Zuhause. Derzeit sind viele Entwickler unsicher, was die Beziehung zwischen Polymer und Webkomponenten angeht. Manche glauben, dass für die Verwendung von Webkomponenten das gesamte Polymer-Element verwendet werden muss, obwohl eigentlich nur die Polyfills erforderlich sind.
Um diese Unterscheidung deutlicher zu machen, werden die Polyfills auf webcomponents.org verschoben und in webcomponents.js
umbenannt.
Damit möchten wir anderen Bibliotheksautoren helfen, die Polyfills ohne Verwirrung zu nutzen. Das Polymer-Team wird weiterhin zu den Polyfills beitragen, aber wir hoffen, dass diese Änderung sie zu einer gemeinsamen Ressource für die Community machen wird.
Ergebnisse
Was sind also die Ergebnisse dieser Änderungen?
Geschwindigkeit
In Chrome ist Polymer jetzt 5-mal schneller und in Safari eine 8-mal höhere Geschwindigkeit.
Dateigröße
Außerdem wurde die Dateigröße um 87 % von 123 KB auf 15 KB reduziert (6 KB mit gzip).
Roadmap
In der nächsten Version wird es einige funktionsgefährdende Änderungen an der API geben. Dies wird durch die neue Versionsnummer (0.8) gekennzeichnet, aber das Team möchte klarstellen, dass es sich nicht um eine Neuformulierung handelt. Es sollte relativ einfach sein, Ihr aktuelles Projekt von Polymer 0.5 zu 0.8 zu verschieben.
Das Polymer-Team hat außerdem eine Roadmap erstellt, um Entwicklern mehr Klarheit in Bezug auf künftige Releases zu bieten.
Die 0.8-Vorschau ist jetzt als Zweig auf GitHub verfügbar (aber sie wird noch sehr aktiv weiterentwickelt und es fehlt noch die Dokumentation). Die offizielle Betaversion 0.9 ist für das erste Quartal 2015 geplant, die Version 1.0 wird im 2. Quartal eingeführt.
Der Test ist vorbei
Mit all den jüngsten Änderungen an Polymer legt das Team dahinter den Grundstein dafür, dass Web Components ein integraler Bestandteil des Stacks jedes Entwicklers werden. Wenn Sie noch keine Erfahrung mit Webkomponenten haben, ist jetzt ein guter Zeitpunkt, um sich mit diesen transformativen Technologien vertraut zu machen. Wenn Sie bereits mit Komponenten (und Polymer) arbeiten, sieht die Zukunft wirklich rosig aus. Die neuesten Updates finden Sie im Polymer-Blog. Wenn Sie Fragen oder Kommentare haben, können Sie sich für die Polymer-Mailingliste anmelden. Viel Spaß beim Hacken!