{"id":1384,"date":"2016-02-16T15:46:54","date_gmt":"2016-02-16T14:46:54","guid":{"rendered":"https:\/\/www.inovex.de\/\/?p=1384"},"modified":"2026-03-17T08:00:08","modified_gmt":"2026-03-17T07:00:08","slug":"polymer-1-0-das-experiment-ist-vorueber","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/","title":{"rendered":"Polymer 1.0: Das Experiment ist vor\u00fcber"},"content":{"rendered":"<p>Als Experiment f\u00fcr eine standardisierte Komponentenbildung bei Webapplikationen gestartet, wurde Polymer nun mit Version 1.0 auf eine stabile und f\u00fcr Produktiv-Apps einsatzbereite Basis gestellt. Dieser Artikel m\u00f6chte diskutieren, welche Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise stecken, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.<!--more--><\/p>\n<p>Eines sollte gleich vorweg gesagt werden: In der Entwicklung von Polymer 0.8, die als Alpha-Version von 1.0 angesehen werden kann, blieb kaum ein Stein auf dem anderen. Matt McNulty, einer der K\u00f6pfe hinter dem Thema Webkomponenten bei Google, bezeichnete die Entwicklung von Polymer und der Webkomponenten vor Version 0.8 als ein <a href=\"https:\/\/www.youtube.com\/watch?v=0LT6W5QVCJI\" target=\"_blank\" rel=\"noopener\">gemeinsames gro\u00dfes Communityexperiment<\/a> unter der Leitfrage, wie komplexe Webapplikationen zuk\u00fcnftig strukturiert werden. Sind Webkomponenten ein vielversprechender Ansatz, um die Entwickler von Webapplikationen produktiver werden zu lassen? Mit kurzen Feedback- und Iterationszyklen wurde in einer sehr interaktiven Art und Weise getestet, ob sich die Kombination aus vorgeschlagenen Webstandards (nativ und als Polyfill), Polymer-Bibliothek und bestehenden Komponenten f\u00fcr die allt\u00e4gliche Entwicklung von Webapplikationen eignet. Diese Phase wurde mit Polymer 0.5 erfolgreich abgeschlossen.<\/p>\n<p>Aber es blieb eine Reihe von Fragen offen. Werden die anderen Browserhersteller neben Chrome die vorgeschlagenen Standards nativ implementieren? Und wenn ja, wann? Gesetzt den Fall, dass ein Webbrowser Webkomponenten nicht nativ unterst\u00fctzt, welche Performance ist dann mit Polyfills m\u00f6glich und welche Einschr\u00e4nkungen m\u00fcssen daf\u00fcr gegebenenfalls in Kauf genommen werden? Ab wann und wie kann ich eine komplexe Webapplikation mit zahlreichen Webkomponenten \u00fcber alle wichtigen Webbrowser, sowohl Desktop als auch mobil, produktiv und ohne Bedenken einsetzen?<\/p>\n<p>Das noch junge Webkomponenten\u00f6kosystem stand vor der Frage, wie es angesichts dieser unklaren und nicht komplett beeinflussbaren Rahmenbedingungen den Weg in die Produktion finden sollte. Das Polymer-Team entschied sich, nicht auf die native Implementierung der Webkomponentenspezifikationen durch die Browserhersteller zu warten. Stattdessen wurde untersucht, ob es m\u00f6glich w\u00e4re, mit einer gr\u00fcndlichen Komplett\u00fcberarbeitung des gesamten Stacks und gepaart mit permanenten und sorgf\u00e4ltigen Performancemessungen den Geschwindigkeitsverlust gegen\u00fcber einer nativen Implementierung auf allen unterst\u00fctzten Browsern auf 10 bis 20 Prozent zu begrenzen. Nach den ersten vielversprechenden Ergebnissen zur Zeit des Chrome Developer Summits im letzten Jahr bildete dieser Ansatz die Grundlage f\u00fcr die Polymer-Version 0.8. Dabei handelt es sich um einen robusten, skalierbaren und f\u00fcr den Produktionseinsatz optimierten Webkomponentenunterbau auf allen unterst\u00fctzten Browsern \u2013 schlank, aber dennoch funktional nahe an den M\u00f6glichkeiten von Version 0.5. Die Geschwindigkeitseinbu\u00dfen sind gegen\u00fcber einer nativen Browserunterst\u00fctzung \u00fcberschaubar. In der Weiterentwicklung von 0.8 bis Version 1.0 \u00e4nderte sich die Implementierung nur noch minimal.<\/p>\n<p>Zum aktuellen Zeitpunkt befindet sich 1.1.5 in einer stabilen Version und wird kontinuierlich weiterentwickelt. Die Ergebnisse (Abb. 1) in Bezug auf die Start-up-Performance zeigen die <a href=\"https:\/\/web.archive.org\/web\/20151006141755\/https:\/\/blog.polymer-project.org\/updates\/2015\/03\/27\/why-0.8\/\" target=\"_blank\" rel=\"noopener\">Fortschritte zwischen 0.5 und 1.1<\/a>. Die Core- Elemente wurden in Iron-Elemente umbenannt (core-list wird zu iron-list) und von Polymer selbst entkoppelt. Die von Google unterst\u00fctzten und mitentwickelten Elemente sind auf der <a href=\"https:\/\/www.webcomponents.org\/author\/PolymerElements\" target=\"_blank\" rel=\"noopener\">Elements-Website<\/a> aufgelistet, Iron- und Paper-Elemente bilden dabei die wichtigsten Kollektionen.<\/p>\n<figure id=\"attachment_1480\" aria-describedby=\"caption-attachment-1480\" style=\"width: 800px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-versionsvergleich.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1480\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-versionsvergleich-1024x576.png\" alt=\"Start-up-Performance im Vergleich\" width=\"800\" height=\"450\" \/><\/a><figcaption id=\"caption-attachment-1480\" class=\"wp-caption-text\">Abb. 1: Start-up-Performance im Vergleich von 0.5 zu 0.8 auf unterschiedlichen Browsern, Quelle: Polymer<\/figcaption><\/figure>\n<p>Aufgrund des gro\u00dfen Funktionsumfangs wird in diesem Artikel nur auf die f\u00fcr die Beispielkomponente unseres ersten Artikels \u201eVon Kompositionen und Arrangements\u201c in dieser Ausgabe auf Seite XX relevanten Features n\u00e4her eingegangen und einige wichtige Funktionen beispielhaft vorgestellt.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Grundlegende-Aenderungen\" >Grundlegende \u00c4nderungen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Migration-von-05-auf-10\" >Migration von 0.5 auf 1.0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Weitere-Neuerungen\" >Weitere Neuerungen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Cross-Scope-Styling\" >Cross-Scope Styling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Roadmap-und-offene-Probleme\" >Roadmap und offene Probleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Fazit\" >Fazit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Were-hiring\" >We&#8217;re hiring!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#Weiterlesen\" >Weiterlesen<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Grundlegende-Aenderungen\"><\/span>Grundlegende \u00c4nderungen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Wesentlich ver\u00e4ndert hat sich Polymer in seinem Aufbau. So gibt es nun unterschiedliche Varianten: Micro, Mini und Polymer (bzw. Standard). Micro enth\u00e4lt den geringsten, Standard den gr\u00f6\u00dften Funktionsumfang. So ist es f\u00fcr eigene Komponenten m\u00f6glich, aus einer der drei Varianten auszuw\u00e4hlen. Die einzelnen Varianten bauen als Schichten aufeinander auf. Abbildung 2 zeigt dies schematisch. Dadurch ist es einfach m\u00f6glich, auch <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/devguide\/experimental.html#feature-layering\" target=\"_blank\" rel=\"noopener\">leichtgewichtige Komponenten<\/a> zu erstellen.<\/p>\n<figure id=\"attachment_1482\" aria-describedby=\"caption-attachment-1482\" style=\"width: 800px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-varianten.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1482\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-varianten-1024x576.png\" alt=\"Polymer 0.8 Varianten\" width=\"800\" height=\"450\" \/><\/a><figcaption id=\"caption-attachment-1482\" class=\"wp-caption-text\">Abb. 2: Polymer 0.8 steht in drei unterschiedlichen Varianten zur Verf\u00fcgung<\/figcaption><\/figure>\n<p>Weitere Neuerungen sind der schnellere Start und die Performance zur Laufzeit, ein verbessertes Data Binding und Shady DOM. Shady DOM ist eine Alternative zum schwergewichtigen Shadow DOM, bei dem der lokale DOM des Templates einer Komponente nicht in einen Shadow Tree eingef\u00fcgt, sondern durch Polymer verwaltet wird. Die Laufzeit soll sich dadurch vor allem in Browsern ohne native Unterst\u00fctzung f\u00fcr Shadow DOM drastisch verbessern, da hier nicht auf Polyfills zur\u00fcckgegriffen werden muss. Hinzu kommt, dass leichtgewichtige Komponenten nicht notwendigerweise <a href=\"https:\/\/www.polymer-project.org\/1.0\/articles\/shadydom.html\" target=\"_blank\" rel=\"noopener\">Shadow DOM verwenden<\/a> sollten.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Migration-von-05-auf-10\"><\/span>Migration von 0.5 auf 1.0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Um die Komponente nach Version 1.0 zu migrieren, werden im Folgenden einzelne wichtige \u00c4nderungen vorgestellt. Aufgrund der F\u00fclle an \u00c4nderungen kann leider nur auf eine Auswahl eingegangen werden. Zun\u00e4chst m\u00fcssen alle Abh\u00e4ngigkeiten in der bower.json auf Version 1.0 angepasst und durch ein<\/p>\n<pre class=\"lang:sh decode:true \">bower cache clean &amp;&amp; bower install<\/pre>\n<p>die 1.0er Abh\u00e4ngigkeiten aufgel\u00f6st werden. Anschlie\u00dfend k\u00f6nnen spezifische \u00c4nderungen f\u00fcr Polymer nachgezogen werden.<\/p>\n<p>Am leichtesten anpassen sich die Elementregistrierung. Bisher wird ein Element wie in Listing 1 registriert und konfiguriert.<\/p>\n<pre class=\"lang:xhtml decode:true\" title=\"Listing 1\">&lt;polymer-element name=\"ph-listview\"&gt;\r\n\r\n    &lt;template&gt;&lt;!-- ... --&gt;&lt;\/template&gt;\r\n\r\n    &lt;script&gt;\r\n\r\n        Polymer(Polymer.mixin({\r\n\r\n        \/\/ \u2026\r\n\r\n        }, Polymer.MyHelper));\r\n\r\n    &lt;\/script&gt;\r\n\r\n&lt;\/polymer-element&gt;<\/pre>\n<p>In Polymer 0.8 wird dies nun durch den Code wie in Listing 2 realisiert.<\/p>\n<pre class=\"lang:xhtml decode:true\" title=\"Listing 2\">&lt;dom-module id=\"ph-listview\"&gt;\r\n\r\n    &lt;template&gt;&lt;!-- ... --&gt;&lt;\/template&gt;\r\n\r\n&lt;\/dom-module&gt;\r\n\r\n&lt;script&gt;\r\n\r\n    Polymer({\r\n\r\n        is: \"ph-listview\",\r\n\r\n        behaviors: [Polymer.MyHelper]\r\n\r\n    })\r\n\r\n&lt;\/script&gt;<\/pre>\n<p>Neu ist die Trennung des Skriptteils vom deklarativen Markup in Listing 2. Zu beachten ist, dass die id des <span class=\"lang:xhtml decode:true crayon-inline \">&lt;dom-module&gt;<\/span> dem Attribut is im Skriptteil entspricht und dass <span class=\"lang:xhtml decode:true crayon-inline \">&lt;dom-module&gt;<\/span> vor dem <span class=\"lang:xhtml decode:true crayon-inline \">&lt;script&gt;<\/span> deklariert wird, damit Polymer <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/migration.html#registration\" target=\"_blank\" rel=\"noopener\">auf die entsprechende id<\/a> zugreifen kann.<\/p>\n<p>Das Einbinden von Mixins erfolgt nun durch die Angabe des Behavior-Objekts im Attribut behaviors des Polymer-Objekts. Auch die Definition der \u00f6ffentlichen Attribute hat sich ge\u00e4ndert; so werden diese nicht mehr im publish-, sondern im properties-Objekt mit der Angabe eines Konfigurationsobjekts definiert. Dieses legt den Datentyp und einen Default-Wert fest. Zus\u00e4tzlich k\u00f6nnen ein reflectToAttribute-, ein readOnly-, ein notify-, ein computed- und ein observer-Attribut definiert werden. Damit werden alle Funktionen, die im Zusammenhang mit einem Property der Polymer-Komponente stehen, kompakt und \u00fcbersichtlicher zusammengefasst, als das in 0.5 der Fall war.<\/p>\n<p>F\u00fcr die Beispielkomponente \u00e4ndert sich die Definition dabei wie in Listing 3 (vorher) und Listing 4 (nachher) gezeigt.<\/p>\n<pre class=\"lang:js decode:true\" title=\"Listing 3\">publish: {\r\n\r\n    feed: '',\r\n\r\n    handleAs: 'xml',\r\n\r\n    viewType: {\r\n\r\n        value: 'default',\r\n\r\n        reflect: true\r\n\r\n    },\r\n\r\n    \/\/ ...\r\n\r\n    dateFormat: ''\r\n\r\n},\r\n\r\nobserve: {\r\n\r\n    feed: '_validateFeed',\r\n\r\n    handleAs: '_validateHandleAs',\r\n\r\n    viewType: '_validateViewType',\r\n\r\n    \/\/ ...\r\n\r\n}<\/pre>\n<pre class=\"lang:js decode:true\" title=\"Listing 4\">properties: {\r\n\r\n    feed: {\r\n\r\n        type: String,\r\n\r\n        observer: '_validateFeed'\r\n\r\n    },\r\n\r\n    handleAs: {\r\n\r\n        type: String,\r\n\r\n        value: 'xml',\r\n\r\n        observer: '_validateHandleAs'\r\n\r\n    },\r\n\r\n    viewType: {\r\n\r\n        type: String,\r\n\r\n        value: 'default',\r\n\r\n        reflectToAttribute: true,\r\n\r\n        observer: '_validateViewType'\r\n\r\n    },\r\n\r\n    dateFormat: String\r\n\r\n}<\/pre>\n<p>Die Angabe der Datentypen ist explizit gefordert und wird f\u00fcr die Deserialisierung eines Attributs verwendet. Auch die Observer werden nun direkt im Attribut konfiguriert und nicht mehr wie in 0.5 \u00fcber das observe-Objekt, welches aber auch <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/migration.html#properties\" target=\"_blank\" rel=\"noopener\">weiterhin in 1.0 enthalten<\/a> ist.<\/p>\n<p>Praktisch in Polymer 0.5 sind die deklarativen Event Handler, die auch in 1.0 verf\u00fcgbar bleiben. Allerdings fallen die geschweiften Klammern weg. Der Code ver\u00e4ndert sich wie folgt:<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"Vorher\">&lt;core-ajax url=\"{{feed}}\" on-core-complete=\"{{_requestCompleted}}\"&gt;&lt;\/core-ajax&gt;<\/pre>\n<pre class=\"lang:xhtml decode:true \" title=\"Nachher\">&lt;iron-ajax url=\"{{feed}}\" on-response=\"_requestCompleted\"&gt;&lt;\/iron-ajax&gt;<\/pre>\n<p>Im Wesentlichen sind die gezeigten Ver\u00e4nderungen problemlos umsetzbar. Interessanter wird der Einsatz von Shady DOM, der per Default als Alternative zum schwergewichtigen Shadow DOM in allen Browsern aktiv ist \u2013 auch in Chrome.<\/p>\n<p>Optional kann Shadow DOM aktiviert werden, der dann in Browsern ohne native Unterst\u00fctzung einen Polyfill erfordert oder nativ unterst\u00fctzt wird. Polymer verwendet in diesem Fall den nativen Shadow DOM, wenn er auf der entsprechenden Plattform vorhanden ist. Der Entwickler muss sicherstellen, dass bei Browsern ohne native Unterst\u00fctzung das <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/devguide\/settings.html\" target=\"_blank\" rel=\"noopener\">Polyfill f\u00fcr Shadow DOM<\/a> vorhanden ist.<\/p>\n<p>Polymer 1.0 f\u00fchrt dazu einen Abstraktions-Layer ein, der von den Entwicklern genutzt werden muss, um nicht direkt auf das DOM-API zuzugreifen. Dies w\u00fcrde dazu f\u00fchren, dass Zugriffe \u00fcber den querySelector <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/migration.html#local-dom-template\" target=\"_blank\" rel=\"noopener\">bei Shady DOM<\/a> <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/devguide\/local-dom.html#dom-api\" target=\"_blank\" rel=\"noopener\">nicht greifen<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Weitere-Neuerungen\"><\/span>Weitere Neuerungen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Grundlegend ver\u00e4ndert hat sich das Data Binding. So sind keine Polymer Expressions mehr innerhalb von Binding-Ausdr\u00fccken erlaubt, die beispielsweise einfache Berechnungen oder String-Konkatenationen erm\u00f6glichten. Hierf\u00fcr sollen als Ersatz Computed Properties eingesetzt werden.<\/p>\n<p>Auch wird ab 0.8 nur noch der gesamte Inhalt von DOM-Knoten ersetzt und nicht mehr einzelne Teile darin, da String-Operationen relativ teuer sind. Die \u00c4nderungen werden durch folgendes Beispiel verdeutlicht:<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"Vorher\">&lt;div&gt;Hallo Polymer {{version}}&lt;\/div&gt;<\/pre>\n<pre class=\"lang:xhtml decode:true \" title=\"Nachher\">&lt;div&gt;Hallo Polymer &lt;span&gt;{{version}}&lt;\/span&gt;&lt;\/div&gt;<\/pre>\n<p>Textinhalte ersetzen so immer den gesamten Inhalt eines Knotens, in diesem Beispiel den Inhalt des <span class=\"lang:xhtml decode:true crayon-inline \">&lt;span&gt;<\/span> -Tags. Anstelle der String-Konkatenationen k\u00f6nnen Computed Properties eingesetzt werden (Listing 5).<\/p>\n<pre class=\"lang:xhtml decode:true\" title=\"Listing 5\">&lt;div&gt;My name is &lt;span&gt;{{ fullName(firstName, lastName) }}&lt;\/span&gt;&lt;\/div&gt;\r\n\r\n&lt;script&gt;\r\n\r\n    Polymer({\r\n\r\n        is: '...',\r\n\r\n        fullName: function(first, last) {\r\n\r\n            return first + ' ' + last;\r\n\r\n        }\r\n\r\n    })\r\n\r\n<\/pre>\n<p>Die Funktion wird dabei sowohl bei der \u00c4nderungen des Werts in firstName wie auch in lastName aufgerufen.<\/p>\n<p>Um Werte nicht auf die Properties des JavaScript-Objekts der entsprechenden Komponente zu setzen, sondern auf die Attribute des HTML-Elements, kann $= anstelle von = verwendet werden:<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;my-list items$=\"{{value}}\"&gt;&lt;\/my-list&gt;\r\n\r\n&lt;!-- setzt &lt;my-list&gt;.setAttribute('items', this.value) --&gt;<\/pre>\n<pre class=\"lang:xhtml decode:true \">&lt;my-list items=\"{{value}}\"&gt;&lt;\/my-list&gt;\r\n\r\n&lt;!-- setzt &lt;my-list&gt;.items = this.value --&gt;<\/pre>\n<p>Weitere Neuerungen und \u00c4nderungen zum Data Binding sind ausf\u00fchrlich <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/devguide\/data-binding.html\" target=\"_blank\" rel=\"noopener\">in den Docs zu finden<\/a>.<\/p>\n<p>Polymer bietet aber neben den funktionalen Aspekten auch einige Layouthelfer, die beispielsweise das CSS-Flexbox-Layout umsetzen. In 0.5 ist es m\u00f6glich, diese als Attribute des zu definieren. Mit 1.0 werden Flexbox-Definitionen durch die <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/migration.html#layout-attributes\" target=\"_blank\" rel=\"noopener\">Anwendung von importierten Custom CSS Properties<\/a> eingebracht:<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"Vorher\">&lt;polymer-element name=\"my-list\" layout horizontal wrap&gt;&lt;\/polymer-element&gt;<\/pre>\n<pre class=\"lang:xhtml decode:true \" title=\"Nachher\">&lt;link rel=\"import\" href=\"bower_components\/iron-flex-layout\/iron-flex-layout.html\"&gt;\r\n\r\n&lt;dom-module id=\"my-list\"&gt;\r\n\r\n\t&lt;style&gt;\r\n\r\n\t\t:host {\r\n\r\n\t\t@apply(--layout-horizontal);\r\n\r\n\t\t@apply(--layout-wrap);\r\n\r\n\t}\r\n\r\n\t&lt;\/style&gt;\r\n\r\n\t&lt;!-- ... --&gt;\r\n\r\n&lt;\/dom-module&gt;<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Cross-Scope-Styling\"><\/span>Cross-Scope Styling<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Es ist h\u00e4ufig der Fall, dass sich gewisse Styling-Regeln auf alle in einer Webapp verwendeten Elemente beziehen \u2013 man denke zum Beispiel an eine Theme-Farbe wie das Blau von Facebook. In 0.5 standen hierf\u00fcr die Pseudo-Selektoren ::shadow und \/deep\/ zur Verf\u00fcgung. Diese sind im 1.0er Release als deprecated markiert und durch shared-styles ersetzt worden. Durch diese ist es m\u00f6glich, ein globales dom-module zu definieren, das Styles beinhaltet, die \u00fcberall import werden und durch das include-Attribute des Style-Tags in die Komponente geladen werden k\u00f6nnen. Au\u00dferdem wird empfohlen, Style-Tags direkt im Template zu deklarieren, da Polymer auf diese Methode optimiert ist.<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;!-- shared-styles.html --&gt;\r\n\r\n&lt;dom-module id=\"shared-styles\"&gt;\r\n\r\n    &lt;template&gt;\r\n\r\n        &lt;style&gt;\r\n\r\n            .warning {\r\n\r\n                color: red;\r\n\r\n                font-weight: bold;\r\n\r\n            }\r\n\r\n        &lt;\/style&gt;\r\n\r\n    &lt;\/template&gt;\r\n\r\n&lt;\/dom-module&gt;\r\n\r\n&lt;!-- using shared styles in an element --&gt;\r\n\r\n&lt;link rel=\"import\" href=\"..\/shared-styles\/shared-styles.html\"&gt;\r\n\r\n&lt;dom-module id=\"x-foo\"&gt;\r\n\r\n    &lt;template&gt;\r\n\r\n        &lt;style include=\"shared-styles\"&gt;&lt;\/style&gt;<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Roadmap-und-offene-Probleme\"><\/span>Roadmap und offene Probleme<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Da mit 1.0 eine solide Basis geschaffen ist, sind die Themen, die zum aktuellen Zeitpunkt angegangen werden, eher Evolution als Revolution. Es wird also <a href=\"https:\/\/www.polymer-project.org\/1.0\/docs\/#roadmap\" target=\"_blank\" rel=\"noopener\">Feinschliff und Konsolidierung<\/a> betrieben.<\/p>\n<p>So soll zum Beispiel der leichtgewichtige Shadow DOM-Polyfill Shady DOM modularisiert und auch au\u00dferhalb von Polymer verwendbar gemacht werden. Au\u00dferdem steht noch nicht fest, wie Shady DOM angepasst werden kann, um eine bessere Interoperabilit\u00e4t mit externen Frameworks zu erm\u00f6glichen.<\/p>\n<p>F\u00fcr das Cross-Scope Styling soll es nach 1.0 ein Build-Tool geben, das das Styling von Komponenten bereits zur Build-Zeit berechnet, um w\u00e4hrend der Laufzeit keine weiteren Berechnungen durch einen <a href=\"https:\/\/www.polymer-project.org\/0.8\/docs\/devguide\/experimental.html#xscope-styling\" target=\"_blank\" rel=\"noopener\">Scope Styling Polyfill<\/a> durchf\u00fchren zu m\u00fcssen. Die genutzte Syntax soll dabei an <a href=\"http:\/\/dev.w3.org\/csswg\/css-variables\/\" target=\"_blank\" rel=\"noopener\">CSS Custom Properties<\/a> anlehnen.<\/p>\n<p>Zus\u00e4tzlich wird es die M\u00f6glichkeit geben, dass Komponenten auch von nicht nativen Elementen erben k\u00f6nnen \u2013 dieses Feature wird erst sp\u00e4ter eingef\u00fchrt, da die meisten Anwendungsf\u00e4lle \u00fcber Behaviors abgebildet werden k\u00f6nnen.<\/p>\n<p>Das nach Version 0.5 entfernte Feature, dass nur Teile des Inhalts eines DOM-Knotens per Databinding ersetzt werden k\u00f6nnen, soll sp\u00e4ter in performanterer Weise wieder eingef\u00fchrt werden.<\/p>\n<p>Auch die Momentan noch rudiment\u00e4re Gestenerkennung soll durch optional hinzuschaltbare Komponenten ausgebaut werden.<\/p>\n<p>Die wichtigste Baustelle in 1.x stellt jedoch das verf\u00fcgbare Tooling dar, an dem mit Hochdruck in verschiedene Richtungen gearbeitet wird. Zu den sich noch in der Entwicklung befindlichen Tools geh\u00f6ren der erw\u00e4hnte Style-Preprocessor, ein Polymer-Linter, und Polymer Designer, ein UI-Builder mit GUI.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Fazit<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Polymer 0.8 stellt basierend auf den Ideen, Prinzipien und Erfahrungen der Version 0.5 eine komplett neue Implementierung zur Verf\u00fcgung, die voll und ganz auf Performance und Produktionstauglichkeit ausgelegt ist. Zu diesem Zweck sind viele Funktionen, wie beispielsweise das Data Binding, nochmals grundlegend \u00fcberarbeitet worden. In der Zeit zwischen 0.8 und 1.0 sind die notwendigen Konsolidierungsarbeiten und Performanceverbesserungen erledigt worden. Ziel war es, einen robusten, soliden, performanten und f\u00fcr die Produktion im Google-Ma\u00dfstab optimierten Stack f\u00fcr Webkomponenten bereitzustellen, der ein m\u00f6glichst breites Spektrum an Webbrowsern f\u00fcr Desktops und mobile Endger\u00e4te unterst\u00fctzt.<\/p>\n<p>Mit Polymer 1.0 ist dieser Schritt zumindest aus Plattformsicht gelungen und der Entwicklung von produktiven Webkomponenten sollte nichts mehr im Weg stehen. Jetzt ist es an den Webentwicklern, dem Projekt mit standardisierten Webkomponenten zum Durchbruch zu verhelfen. Klar ist: Wer einmal mit Webkomponenten entwickelt hat, kann nur schwer wieder loslassen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Were-hiring\"><\/span>We&#8217;re hiring!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tapetenwechsel gef\u00e4llig? Wir sind auf der Suche nach begeisterten Frontend-Entwicklern, die unsere Projektteams im Umfeld von JavaScript, HTML und CSS unterst\u00fctzen und auch vor innovativen Themen wie AngularJS und Progressive Web Apps nicht zur\u00fcckschrecken. <strong>Jetzt Bewerben!<\/strong><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Weiterlesen\"><\/span>Weiterlesen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Mehr Informationen zu unseren Dienstleistungen rund um die Web-Entwicklung gibt es <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/mobile\/mobile-web\/\" target=\"_blank\" rel=\"noopener\">auf unserer Website<\/a>. Unser Portfolio umfasst au\u00dferdem die <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/mobile\/app-entwicklung\/\" target=\"_blank\" rel=\"noopener\">Anwendungsentwicklung f\u00fcr Android &amp; iOS<\/a> mit speziellem Fokus auf <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/mobile\/mobile-enterprise\/\" target=\"_blank\" rel=\"noopener\">Enterprise-Apps<\/a>. F\u00fcr direkten Kontakt schreibt an <a href=\"mailto:info@inovex.de\" target=\"_blank\" rel=\"noopener\">info@inovex.de<\/a> oder ruft an unter <a href=\"tel:+497216190210\" target=\"_blank\" rel=\"noopener\">+49 721 619 021-0<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als Experiment f\u00fcr eine standardisierte Komponentenbildung bei Webapplikationen gestartet, wurde Polymer nun mit Version 1.0 auf eine stabile und f\u00fcr Produktiv-Apps einsatzbereite Basis gestellt. Dieser Artikel m\u00f6chte diskutieren, welche Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise stecken, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.<\/p>\n","protected":false},"author":37,"featured_media":1395,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[70],"service":[444],"coauthors":[{"id":37,"display_name":"Christian Meder","user_nicename":"cmeder"},{"id":38,"display_name":"Johannes Reuter","user_nicename":"jreuter"}],"class_list":["post-1384","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-web","service-frontend"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-16T14:46:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T07:00:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2300\" \/>\n\t<meta property=\"og:image:height\" content=\"678\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Christian Meder, Johannes Reuter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild-1024x302.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christian Meder\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Christian Meder, Johannes Reuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/\"},\"author\":{\"name\":\"Christian Meder\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/9e24c64f27670800f3663014b6e28680\"},\"headline\":\"Polymer 1.0: Das Experiment ist vor\u00fcber\",\"datePublished\":\"2016-02-16T14:46:54+00:00\",\"dateModified\":\"2026-03-17T07:00:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/\"},\"wordCount\":1937,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/polymer-artikelbild.png\",\"keywords\":[\"Web\"],\"articleSection\":[\"Applications\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/\",\"name\":\"Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/polymer-artikelbild.png\",\"datePublished\":\"2016-02-16T14:46:54+00:00\",\"dateModified\":\"2026-03-17T07:00:08+00:00\",\"description\":\"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/polymer-artikelbild.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/polymer-artikelbild.png\",\"width\":2300,\"height\":678,\"caption\":\"Artikelbild Polymer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/polymer-1-0-das-experiment-ist-vorueber\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Polymer 1.0: Das Experiment ist vor\u00fcber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/9e24c64f27670800f3663014b6e28680\",\"name\":\"Christian Meder\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g3dc5d548416d23462360af7572db1c67\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g\",\"caption\":\"Christian Meder\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/cmeder\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH","description":"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/","og_locale":"de_DE","og_type":"article","og_title":"Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH","og_description":"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.","og_url":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2016-02-16T14:46:54+00:00","article_modified_time":"2026-03-17T07:00:08+00:00","og_image":[{"width":2300,"height":678,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png","type":"image\/png"}],"author":"Christian Meder, Johannes Reuter","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild-1024x302.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Christian Meder","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten","Written by":"Christian Meder, Johannes Reuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/"},"author":{"name":"Christian Meder","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/9e24c64f27670800f3663014b6e28680"},"headline":"Polymer 1.0: Das Experiment ist vor\u00fcber","datePublished":"2016-02-16T14:46:54+00:00","dateModified":"2026-03-17T07:00:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/"},"wordCount":1937,"commentCount":3,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png","keywords":["Web"],"articleSection":["Applications","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/","url":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/","name":"Polymer 1.0: Das Experiment ist vor\u00fcber - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png","datePublished":"2016-02-16T14:46:54+00:00","dateModified":"2026-03-17T07:00:08+00:00","description":"Erfahrungen und Motivationen hinter der aktuellen Vorgehensweise, welche Neuerungen es gibt und wie Webkomponenten nach Polymer 1.0 migriert werden k\u00f6nnen.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/02\/polymer-artikelbild.png","width":2300,"height":678,"caption":"Artikelbild Polymer"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/polymer-1-0-das-experiment-ist-vorueber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Polymer 1.0: Das Experiment ist vor\u00fcber"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/9e24c64f27670800f3663014b6e28680","name":"Christian Meder","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g3dc5d548416d23462360af7572db1c67","url":"https:\/\/secure.gravatar.com\/avatar\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/95054817aeb1b6317c4bbc6d8b6233a65546909c752d6190e4d911666a837873?s=96&d=retro&r=g","caption":"Christian Meder"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/cmeder\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/1384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=1384"}],"version-history":[{"count":2,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/1384\/revisions"}],"predecessor-version":[{"id":66544,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/1384\/revisions\/66544"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/1395"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=1384"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=1384"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=1384"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=1384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}