web components

18
Web Components Oliver Hader 30.06.2015 Open Web User Group Oberfranken Web Components LEGO Advent Calendar 2006 by Jay Reed

Upload: oliver-hader

Post on 04-Aug-2015

150 views

Category:

Internet


0 download

TRANSCRIPT

Web ComponentsOliver Hader

30.06.2015

Open Web User Group Oberfranken

Web Components

LEGO AdventCalendar 2006

by Jay Reed

Open Web User Group Oberfranken

Web Components

Zielebessere Semantik & ersichtliche Bedeutung

produktivere Entwicklung & Wiederverwertbarkeit

3

Open Web User Group Oberfranken

Web Components

GrundlagenHTML5 Standards

Templates

HTML Imports

Custom Elements

Shadow DOM

Polyfills: Zwischenlösung

Standardisierung läuft

Prolyfills: Zwischenlösung

mögliche Standardisierung

4

Open Web User Group Oberfranken

Web Components

Custom Elements<DIV> Elemente mit CSS Klassen nicht semantisch

jQuery Plugins funktionieren alle irgendwie unterschiedlich

wir brauchen: mehr Bedeutung & einfache Wiederverwertbarkeit

flexible & individuelle Erweiterung des HTML5 DOM Kontexts

5

<my-slider value="{{value}}"> <my-slider-range min="0" max="500" min-value="75" max-value=„300“/> <my-slider-label> Price range: </my-slider-label> <my-slider-input value="{{value}}"> </my-slider>

Slider Widget

Open Web User Group Oberfranken

Web Components

TemplatesVorlage zur Wiederverwendung, aber nicht ausführen

erst anwenden, wenn es tatsächlich angezeigt wird

DocumentFragment - nicht Teil der Seite

Schutz vor Cross Site Scripting

6

<script type="text/x-handlebars-template"> <div class="info-box"> <h3>{{title}}</h3> <div>{{content}}</div> </div> </script>

var InfoBoxView = Backbone.View.extend({ el: 'div', class: 'info-box', template: '<div>...</div>', render: function() { ... }});

<template> <div class="info-box"> <h3>{{title}}</h3> <div>{{content}}</div> </div> <script></script> </template>

Open Web User Group Oberfranken

Web Components

Shadow DOMDOM & CSS Scoping & geschützter Bereich

Auswirkungen sind abgegrenzt - z.B. auch id-Attribut

Content Insertion Points <content select=…></content>

7

<dom-module id="owug-info-box"> <style> h3 { color: #ccc; } owug-info-box >>> h3 { color: #999; } ::content > p { padding: 1em; } </style> <template> <h3 id="title">{{title}}</h3> <content></content> </template> <script></script> </dom-module>

<owug-info-box title="Headline"> <p>Lorem ipsum...</p> <div> <h3>Some other Headline</h3> </div> </owug-info-box>

Open Web User Group Oberfranken

Web Components

HTML ImportsBündelung & Handhabung von Abhängigkeiten

Bedingung für Wiederverwertbarkeit für Jedermann

asynchron - Skript-Verarbeitung blockiert nicht die Anwendung

8

<head> <script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/bootstrap-theme.min.css"> </head>

<head> <link rel="import" href="component/bootstrap.html"> </head>

Open Web User Group Oberfranken

Web Components

Components RepositoriesVerwendung via Bower

Download / Git Clone

Versionierung / Tagging

Auflösen von Abhängigkeiten

CustomElements.io &Component Kitchen

buntes Allerlei

Indikator Favs & Forks

9

bower install --save \ GoogleWebComponents/google-hangout-button#^1.0.0

Open Web User Group Oberfranken

Web Components

Components RepositoriesPolymer Catalog

Material Design Elemente

Google Web Components

Animationen & Effekte

Offline, Push (HTML5)

10

Open Web User Group Oberfranken

Web Components

Frameworks & LibrariesPolymer & Polymer Elements

von Google, aktuell in Version 1.0

Kompatibilität zu Internet Explorer 10

„Zucker für Web Components“

X-Tags & Brick

von Mozilla

Kompatibilität zu Internet Explorer 9

14 leichtgewichtige Web Components

action, appbar, calendar, form, layout, menu, storage-indexdb

11

Open Web User Group Oberfranken

Web Components

Beispiel: Google Maps

12

<head> <link rel="import" href="google-map.html"> </head> <body> <google-map latitude="50.32497" longitude="11.94023" zoom="13"> <google-map-marker latitude="50.32497" longitude="11.94023"> <strong>Hof University</strong> </google-map-marker> <google-map-marker latitude="50.3276403" longitude="11.9200896"> <strong>Theresienstein City Park</strong> </google-map-marker> </google-map> </body>

<google-map latitude="50.32497" longitude="11.94023"></google-map>

Open Web User Group Oberfranken

Web Components

Beispiel: Local Storage

13

<dom-module id="owug-storage"> <iron-localstorage name="owug-some-name" value="{{data}}" on-iron-localstorage-load-empty="initialize"> </iron-localstorage> <input value="{{data.firstName}}" /> <input value="{{data.lastName}}" /></dom-module> <script> Polymer({ is: 'owug-storage', properties: { data: Object }, initialize: function() { this.data = { firstName: 'Oliver', lastName: 'Hader' } } });</script>

Open Web User Group Oberfranken

Web Components

Chrome DevTools

14

Open Web User Group Oberfranken

Web Components

„Gibt’s doch schon!“AngularJS 1.3/1.4 kann das ja auch

„Custom Tags“

„Templates“

„Scoping“

AngularJS 2.0 Roadmap

kompletter Rewrite in TypeScript für ECMAScript 6

bisherige eigene Polyfills werden aufgegeben

basierend auf Web Components Features

Angular Material - 31 Elemente

15

Open Web User Group Oberfranken

Web Components

FazitWeb Components

sind deklarativ und wiederverwertbar

sind kombinierbar und erweiterbar

sind interoperabel - DOM gemeinsamer Nenner

erlauben Kapselung - Scoping

steigern Produktivität & Barrierefreiheit

sind Standard

AngularJS 2.0 mit Web Components

fördern Komponentendenken

16

Open Web User Group Oberfranken

Web Components

Quellen & LinksGrundlagen

Web Components: http://webcomponents.org/

Google/IO 2014 Web Components: https://www.youtube.com/watch?v=8OJ7ih8EE7s

Google/IO 2015 Polymer & Elements: https://www.youtube.com/watch?v=fD2As5RmM8Q

Status Internet Explorer: https://status.modern.ie/?term=web%20components

Frameworks & Libraries

Mozilla X-Tags & Bricks: http://www.x-tags.org/ & https://mozbrick.github.io/

Google Polymer & Elements: https://www.polymer-project.org/ & https://elements.polymer-project.org/

weitere Repositories: https://customelements.io/ & http://component.kitchen/components

Bower Package Management: http://bower.io/#getting-started

Beispiele & Ausblick

T3DD15 Website mit Web Components: https://t3dd15.typo3.org/

Experiment Web Components vs. AngularJS 1.4: https://github.com/ohader/wecan

AngularJS 2.0 Preview: http://ng-learn.org/2014/03/AngularJS-2-Status-Preview/

17

Open Web User Group Oberfranken

Web Components

Vielen Dank!