Erstellen Sie nun einige Apps mit Polymer!

Im vergangenen Jahr hat das Polymer-Team viel Zeit damit verbracht, Entwicklern beizubringen, wie sie ihre eigenen Elemente erstellen können. Dies hat zu einem schnell wachsenden Ökosystem geführt, das größtenteils durch die Core- und Paper-Elemente von Polymer sowie die Brick-Elemente unterstützt wird, die vom Team bei Mozilla entwickelt wurden.

Wenn Entwickler mit der Erstellung ihrer eigenen Elemente immer vertrauter werden und über die Entwicklung von Anwendungen nachdenken, wirft dies eine Reihe von Fragen auf:

  • Wie sollten Sie die Benutzeroberfläche Ihrer Anwendung strukturieren?
  • Wie erfolgt der Wechsel zwischen verschiedenen Bundesstaaten?
  • Mit welchen Strategien lässt sich die Leistung verbessern?
  • Und wie sollten Sie Nutzern ein Offline-Erlebnis bieten?

Für den Chrome Dev Summit habe ich versucht, diese Fragen zu beantworten, indem ich eine kleine Kontakte-Anwendung entwickelte und den Prozess analysierte, den ich zur Entwicklung durchlaufen habe. Folgendes habe ich mir überlegt:

Struktur

Das Aufteilen einer Anwendung in modulare Teile, die kombiniert und wiederverwendet werden können, ist ein zentraler Mandant von Webkomponenten. Die Kern-* und Papier*-Elemente von Polymer erleichtern den Einstieg in kleine Elemente wie die Kernsymbolleiste und die Papiersymbol-Schaltfläche.

Mit Polymer können Entwickler Anwendungen schneller erstellen

...und kombinieren Sie sie mithilfe der Kraft der Komposition mit einer beliebigen Anzahl von Elementen, um ein Anwendungsgerüst zu erstellen.

Polymer macht Webkomponenten süßer

Sobald Sie ein allgemeines Gerüst haben, können Sie Ihre eigenen CSS-Designs anwenden, um es in eine für Ihre Marke passende Erfahrung zu verwandeln. Das Schöne an dieser Vorgehensweise mit Komponenten ist, dass Sie damit sehr unterschiedliche Erfahrungen erstellen können, während Sie mit derselben App die Grundelemente erstellen, die Sie erstellen. Sobald du ein Grundgerüst parat hast, kannst du über deine Inhalte nachdenken.

Ein Element, das sich besonders gut für den Umgang mit vielen Inhalten eignet, ist core-list.

Polymer macht Webkomponenten süßer

Das core-list kann mit einer Datenquelle (im Grunde ein Objekt-Array) verbunden werden. Für jedes Element im Array wird eine Vorlageninstanz generiert. In der Vorlage können Sie die Leistung des Datenbindungssystems von Polymer nutzen, um Ihre Inhalte schnell zu verknüpfen.

Übergänge

Nachdem Sie die verschiedenen Bereiche Ihrer App entworfen und implementiert haben, besteht die nächste Aufgabe darin, herauszufinden, wie Sie tatsächlich zwischen ihnen navigieren können.

core-animated-pages ist zwar noch ein experimentelles Element, stellt aber ein Plug-in-Animationssystem bereit, das für den Übergang zwischen verschiedenen Status in Ihrer App verwendet werden kann.

Polymer-Berichtskarte verbesserungsbedürftig

Animationen sind jedoch nur die Hälfte des Puzzles. Eine Anwendung muss diese Animationen mit einem Router kombinieren, um die URLs richtig verwalten zu können.

Bei Webkomponenten gibt es zwei Varianten des Routings: imperativ und deklarativ. Die Kombination von core-animated-pages mit beiden Ansätzen kann je nach Projektanforderungen gültig sein.

Ein imperativer Router (z. B. Flatiron's Director) kann eine übereinstimmende Route abhören und core-animated-pages dann anweisen, das ausgewählte Element zu aktualisieren.

Polymer-Berichtskarte verbesserungsbedürftig

Dies kann nützlich sein, wenn Sie nach der Zuordnung einer Route noch etwas tun müssen, bevor der nächste Abschnitt übergangen wurde.

Dagegen kann ein deklarativer Router (z. B. app-router) Routing und core-animated-pages in einem einzigen Element kombinieren, sodass die Verwaltung der beiden vereinfacht wird.

Polymer-Berichtskarte verbesserungsbedürftig

Wenn Sie eine genauere Steuerung wünschen, können Sie sich eine Bibliothek wie more-routing ansehen, die mithilfe von Datenbindung mit core-animated-pages kombiniert werden kann und möglicherweise das Beste aus beiden Welten bietet.

Leistung

Wenn Ihre Anwendung neue Formen annimmt, müssen Sie Leistungsengpässe im Auge behalten, insbesondere im Zusammenhang mit dem Netzwerk, da dies oft der langsamste Teil einer mobilen Webanwendung ist.

Ein einfacher Leistungsvorteil entsteht durch das bedingte Laden der Webkomponenten-Polyfills.

Polymer-Berichtskarte verbesserungsbedürftig

Es gibt keinen Grund, all diese Kosten zu verursachen, wenn die Plattform bereits vollen Support bietet. In jedem Release des neuen webcomponents.js-Repositorys wurden die Polyfills auch in eigenständige Dateien aufgeteilt. Dies ist hilfreich, wenn Sie eine Teilmenge der Polyfills bedingt laden möchten.

<script>
  if ('import' in document.createElement('link')) {
    // HTML Imports are supported
  } else {
    document.write(
      '<script src=“bower_components/webcomponentsjs/HTMLImports.min.js"><\/script>'
    );
  }
</script>

Durch die Ausführung aller HTML-Importe mit einem Tool wie Vulcanize können Sie außerdem erhebliche Netzwerkvorteile erzielen.

Polymer-Berichtskarte verbesserungsbedürftig

Die Sense verkettet deine Importe zu einem einzigen Bundle, wodurch die Anzahl der HTTP-Anfragen deiner App erheblich reduziert wird.

Offline

Aber das Erstellen einer leistungsfähigen App reicht nicht aus, um das Dilemma eines Nutzers mit wenig oder gar keiner Konnektivität zu lösen. Mit anderen Worten: Wenn Ihre App offline nicht funktioniert, handelt es sich nicht wirklich um eine mobile App. Derzeit können Sie den abgegrenzten Anwendungscache für die Offline-Nutzung Ihrer Ressourcen verwenden. Mit Blick in die Zukunft sollte der Servicemitarbeiter jedoch schon bald die Offline-Entwicklung viel einfacher gestalten können.

Jake Archibald hat vor Kurzem ein tolles Kochbuch mit Service Worker-Mustern veröffentlicht, aber ich möchte Ihnen einen schnellen Einstieg geben:

Die Installation eines Service Workers lässt sich ganz einfach beenden. Erstellen Sie eine worker.js-Datei und registrieren Sie sie, wenn Ihre Anwendung gestartet wird.

Polymer-Berichtskarte verbesserungsbedürftig

Sie müssen worker.js im Stammverzeichnis Ihrer Anwendung platzieren, damit sie Anfragen von jedem Pfad in Ihrer Anwendung abfangen kann.

Im Installations-Handler des Workers speichere ich eine Bootslast an Ressourcen (einschließlich der Daten für die App).

Polymer-Berichtskarte verbesserungsbedürftig

Dadurch kann meine App dem Nutzer mindestens ein Fallback anbieten, wenn er offline darauf zugreift.

Nur Mut!

Web Components sind eine große Ergänzung der Webplattform und befinden sich noch in den Kinderschuhen. Wenn sie in immer mehr Browsern landen, liegt es an uns, der Entwickler-Community, die Best Practices für die Strukturierung unserer Anwendungen zu erarbeiten. Die oben genannten Lösungen sind zwar ein guter Ausgangspunkt, es gibt jedoch noch viel mehr zu lernen. Weiter gehts mit der Entwicklung besserer Apps!