SlideShare a Scribd company logo
WEBCOMPONENTS
@marcbaechinger
‚web development is overly complex…‘
unknown, but desperate software engineer
lack of encapsulation and abstraction
TODAYS STANDARDS BODY
STANDARDS BODY
W3C webcomponents
STANDARDS BODY
W3C webcomponents
heavily in flux
STANDARDS BODY
W3C webcomponents
webcomponents polyfill
heavily in flux
STANDARDS BODY
W3C webcomponents
webcomponents polyfill
heavily in flux
2013: same for x-tags and polymer
STANDARDS BODY
W3C webcomponents
webcomponents polyfill
x-tags polymer
brick polymer elements
heavily in flux
2013: same for x-tags and polymer
STANDARDS BODY
W3C webcomponents
webcomponents polyfill
x-tags polymer
brick polymer elements
heavily in flux
2013: same for x-tags and polymer
wrapper API (JS/HTML)
STANDARDS BODY
W3C webcomponents
webcomponents polyfill
x-tags polymer
brick polymer elements
heavily in flux
2013: same for x-tags and polymer
wrapper API (JS/HTML)
element sets (accordion, …)
http://www.w3.org/TR/components-intro/
Templates
Custom elements
Shadow DOM
Imports
June 2013
BROWSER SUPPORT
polymer
BROWSER SUPPORT
x-tags
polymer
HTML IMPORTS
imports.html
<link href="../styles/import.css" rel="stylesheet"/> 

<section id="root">

<h1>Caption of import</h1>

<p>imported text<p>

</section>

<script>

(function (global) {

global.markup = {

hi: function () {

console.log("hi from a fun declared in an import");

}

};

}(this));

</script>
HTML IMPORTS
<link id="markup" rel="import" href="imports.html">
import html fragment
var link = __.e("#markup");

var markup = link.import;

var fragment = markup.querySelector("#root");
access import
HTML IMPORTS
<link id="markup" rel="import" href="imports.html">
import html fragment
var link = __.e("#markup");

var markup = link.import;

var fragment = markup.querySelector("#root");
access import
HTML IMPORTS
<link id="markup" rel="import" href="imports.html">
import html fragment
usually cloned before use
HTML IMPORTS
HTML IMPORTS
check for import property to feature test
SCRIPTS IN IMPORTS
// in the import fragment

<script>

(function (global) {

global.markup = {

hi: function () {}

};

}(window));

</script>
// in the parent document

window.markup.hi();

SCRIPTS IN IMPORTS
// in the import fragment

<script>

(function (global) {

global.markup = {

hi: function () {}

};

}(window));

</script>
// in the parent document

window.markup.hi();

executed once when imported
SCRIPTS IN IMPORTS
// in the import fragment

<script>

(function (global) {

global.markup = {

hi: function () {}

};

}(window));

</script>
// in the parent document

window.markup.hi();

parent global context
executed once when imported
NO PARENT DOCUMENT!
<script>

var importDoc = 

document.currentScript.ownerDocument;



var parentDocument = document;

</script>

part of the imports.html
NO PARENT DOCUMENT!
<script>

var importDoc = 

document.currentScript.ownerDocument;



var parentDocument = document;

</script>

part of the imports.html
so scripts behave the same as in parent doc
TEMPLATES
TEMPLATE - LAZY MARKUP
<template id="template">

<h1>Diego Maradona</h1>

<img src="maradona.jpg"/>

<script>

console.log("exec template script");

</script>

</template>
TEMPLATE - LAZY MARKUP
<template id="template">

<h1>Diego Maradona</h1>

<img src="maradona.jpg"/>

<script>

console.log("exec template script");

</script>

</template>
lazy loaded
TEMPLATE - LAZY MARKUP
<template id="template">

<h1>Diego Maradona</h1>

<img src="maradona.jpg"/>

<script>

console.log("exec template script");

</script>

</template>
executed each time when applied
lazy loaded
FEATURETEST
function supportsTemplate() {

var el = document.createElement('template');

return !!('content' in el);

}
read-only DocumentFragment
INSERTING ATEMPLATE
var tmpl = __.e("#template"),

target = __.e("#target");



target.appendChild(

document.importNode(tmpl.content, true)

);
IMPORTEDTEMPLATES
// select the import root from the ‚link‘ elem

var importLink = __.e("#import-1").import;

// select the template within the import

var tmpl = __.e("template", importLink);
__.e("#target").appendChild(

document.importNode(tmpl.content, true)

);
SHADOW DOM
!
Denn die einen sind im Dunkeln

Und die andern sind im Licht

Und man siehet die im Lichte

Die im Dunkeln sieht man nicht 	

!
aus Mackie Messer von Berthold Brecht
RENDERTREE
t e
RENDERTREE
t e
shadow = target.createShadowRoot()
RENDERTREE
t e
shadow = target.createShadowRoot()
RENDERTREE
t e
shadow = target.createShadowRoot()
s
shadow root
RENDERTREE
t e
shadow = target.createShadowRoot() shadow.appendChild(element)
s
shadow root
RENDERTREE
t e
shadow = target.createShadowRoot()
<content/>
shadow.appendChild(element)
s
shadow root
HTML IMPORTS
HTML IMPORTS
initial child node
HTML IMPORTS
initial child node
shadow DOM from template
HTML IMPORTS
initial child node
shadow DOM from template
insertion point of initial content
SHADOW DOMTEMPLATES
function renderShadow(tmplId, targetSelector) {

var tmpl = __.e("#" + tmplId),

target = __.e(targetSelector),

shadow = target.createShadowRoot();



target.style.display = "block";

shadow.appendChild(

tmpl.content.cloneNode(true)

);

}
SHADOW DOMTEMPLATES
function renderShadow(tmplId, targetSelector) {

var tmpl = __.e("#" + tmplId),

target = __.e(targetSelector),

shadow = target.createShadowRoot();



target.style.display = "block";

shadow.appendChild(

tmpl.content.cloneNode(true)

);

}
visually removes all previous children
SHADOW DOMTEMPLATES
<div id="name-shadow-hook" class="hook">

<span class="email">marc.baechinger@gmail.com</span>

<span class="address">Webergasse 23, 8408 Winterthur</span>

<span class="name">Hans Meier</span>

<img src="../images/alaska.jpg" width="480"/>

</div>
<template id="person-template">

<section>

<h3><content select=".name"/></h3>

<p><b>Address</b> <content select=".address"/></p>

<p><b>E-Mail</b> <content select=".email"/></p>

<div><content select=„img"/></div>

</section>

</template>
SHADOW DOMTEMPLATES
<div id="name-shadow-hook" class="hook">

<span class="email">marc.baechinger@gmail.com</span>

<span class="address">Webergasse 23, 8408 Winterthur</span>

<span class="name">Hans Meier</span>

<img src="../images/alaska.jpg" width="480"/>

</div>
<template id="person-template">

<section>

<h3><content select=".name"/></h3>

<p><b>Address</b> <content select=".address"/></p>

<p><b>E-Mail</b> <content select=".email"/></p>

<div><content select=„img"/></div>

</section>

</template>
change initial DOM to change shadow dom
SHADOW DOMTEMPLATES
<template id=„person-template">

<article id="master">

<header><content select=".header"/></header>

<div><content select=".content"/></div>

<footer><content select=".footer"/></footer>

</article>

</template>
template demo
pic: www.lolpig.com
CUSTOM ELEMENTS
<woot/>
CUSTOM ELEMENTS
<polymer-ui-accordion selected="1" id="accordion">

<polymer-ui-collapsible id="abstraction">

<div class="polymer-ui-collapsible-
header">Abstraction and encapsulation</div>

<div>…</div>

</polymer-ui-collapsible>

<polymer-ui-collapsible id="abstraction">

<div class="polymer-ui-collapsible-
header">Abstraction and encapsulation</div>

<div>…</div>

</polymer-ui-collapsible>

</polymer-ui-accordion>
CUSTOM ELEMENTS
CUSTOM ELEMENTS
invisible to querySelector and CSS rules
CUSTOM ELEMENTS
invisible to querySelector and CSS rules
use elements and attributes of DOM as 	

API to interact with the 	

shadow DOM component:

!
acc.setAttribute("selected", 1);
CUSTOM ELEMENTS
function (name, spec, callbacks) {

var proto =

Object.create(HTMLDivElement.prototype);



// […] check for callbacks



return document.registerElement(name, {

prototype: Object.create(proto, spec || {})

});

}
CUSTOM ELEMENTS
function (name, spec, callbacks) {

var proto =

Object.create(HTMLDivElement.prototype);



// […] check for callbacks



return document.registerElement(name, {

prototype: Object.create(proto, spec || {})

});

}
returns a constructor
CUSTOM ELEMENTS
function (name, spec, callbacks) {

var proto =

Object.create(HTMLDivElement.prototype);



// […] check for callbacks



return document.registerElement(name, {

prototype: Object.create(proto, spec || {})

});

}
returns a constructor
the prototype of the constructor
CALLBACKS
proto.createdCallback = function () {}



proto.attachedCallback = function () {}



proto.detachedCallback = function () {}
proto.attributeChangedCallback = f(name,oldV,newV) {}
CALLBACKS
proto.createdCallback = function () {}



proto.attachedCallback = function () {}



proto.detachedCallback = function () {}
proto.attributeChangedCallback = f(name,oldV,newV) {}
this is the DOM element
CUSTOM ELEMENTS
register(

'x-label', 

{},

{

createdCallback: function() {},

attachedCallback: function() {}

}

);
x-label demo
pic: www.lolpig.com
WEBCOMPONENTS	

RECAP
polyfills to use it today
infrastructure for abstraction and
encapsulation
infrastructure to build frameworks 	

on top of it
heavily pushed by Google
future in the dust
RECAP
BRICK AND POLYMER
POLYMER
POLYMER
polyfill
POLYMER
polyfill
polymer framework (eg. databinding)
POLYMER
polyfill
polymer framework (eg. databinding)
polymer elements
POLYMER
polyfill
polymer framework (eg. databinding)
polymer elementspolymer elements
X-TAGS
X-TAGS API (IMPERATIVE)
MOZILLA.GITHUB.IO/BRICK/
MOZILLA.GITHUB.IO/BRICK/
available elements
MOZILLA.GITHUB.IO/BRICK/
available elements
styles and scripts of Brick
THX, GUYS!
RESOURCES
GENERAL
https://html5-demos.appspot.com/static/webcomponents/index.html	

!
www.html5rocks.com/en/tutorials/webcomponents/customelements/	

!
!
https://developer.mozilla.org/en-US/Apps/Tools_and_frameworks/x-tags
HTML IMPORTS
http://w3c.github.io/webcomponents/spec/imports/

http://www.w3.org/TR/2013/WD-html-imports-20130514/

http://www.w3.org/TR/2014/WD-html-imports-20140311/
http://www.html5rocks.com/en/tutorials/webcomponents/
imports/

http://www.polymer-project.org/platform/html-imports.html
https://bugzilla.mozilla.org/show_bug.cgi?id=877072

http://www.x-tags.org/blog
TEMPLATES
http://www.w3.org/TR/components-intro/#template-
section
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/
spec/templates/index.html
http://www.html5rocks.com/en/tutorials/webcomponents/
template/
Ad

Recommended

Web Components and Modular CSS
Web Components and Modular CSS
Andrew Rota
 
Web Components
Web Components
Nikolaus Graf
 
High-Quality JavaScript
High-Quality JavaScript
Marc Bächinger
 
Levent-Gurses' Introduction to Web Components & Polymer
Levent-Gurses' Introduction to Web Components & Polymer
Erik Isaksen
 
HTML5와 오픈소스 기반의 Web Components 기술
HTML5와 오픈소스 기반의 Web Components 기술
Jeongkyu Shin
 
Web Components Everywhere
Web Components Everywhere
Ilia Idakiev
 
HTML5 - Introduction
HTML5 - Introduction
Davy De Pauw
 
Polymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill Library
naohito maeda
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Google Polymer Framework
Google Polymer Framework
Kostas Karolemeas
 
Intro to html 5
Intro to html 5
Ian Jasper Mangampo
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
Hendrik Ebbers
 
ActiveDOM
ActiveDOM
Felix Geisendörfer
 
The Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
mattsmcnulty
 
Introduction to HTML5
Introduction to HTML5
Terry Ryan
 
Introduction to Html5
Introduction to Html5
www.netgains.org
 
Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
 
A brave new web - A talk about Web Components
A brave new web - A talk about Web Components
Michiel De Mey
 
New Elements & Features in HTML5
New Elements & Features in HTML5
Jamshid Hashimi
 
HTML5 Essentials
HTML5 Essentials
Marc Grabanski
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
Bastian Hofmann
 
Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)
Dhyego Fernando
 
Using Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion Dollars
Mike Pack
 
HTML 5 & CSS 3
HTML 5 & CSS 3
Kevin van Dijk
 
HTML5
HTML5
Hatem Mahmoud
 
Knockout.js
Knockout.js
Vivek Rajan
 
HTML5 Introduction
HTML5 Introduction
dynamis
 
Fsoft Introduction
Fsoft Introduction
LONG NGUYEN
 
Microservices at NewStore
Microservices at NewStore
Jan-Oliver Pantel
 

More Related Content

What's hot (20)

Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Google Polymer Framework
Google Polymer Framework
Kostas Karolemeas
 
Intro to html 5
Intro to html 5
Ian Jasper Mangampo
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
Hendrik Ebbers
 
ActiveDOM
ActiveDOM
Felix Geisendörfer
 
The Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
mattsmcnulty
 
Introduction to HTML5
Introduction to HTML5
Terry Ryan
 
Introduction to Html5
Introduction to Html5
www.netgains.org
 
Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
 
A brave new web - A talk about Web Components
A brave new web - A talk about Web Components
Michiel De Mey
 
New Elements & Features in HTML5
New Elements & Features in HTML5
Jamshid Hashimi
 
HTML5 Essentials
HTML5 Essentials
Marc Grabanski
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
Bastian Hofmann
 
Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)
Dhyego Fernando
 
Using Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion Dollars
Mike Pack
 
HTML 5 & CSS 3
HTML 5 & CSS 3
Kevin van Dijk
 
HTML5
HTML5
Hatem Mahmoud
 
Knockout.js
Knockout.js
Vivek Rajan
 
HTML5 Introduction
HTML5 Introduction
dynamis
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
Hendrik Ebbers
 
The Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
mattsmcnulty
 
Introduction to HTML5
Introduction to HTML5
Terry Ryan
 
Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
 
A brave new web - A talk about Web Components
A brave new web - A talk about Web Components
Michiel De Mey
 
New Elements & Features in HTML5
New Elements & Features in HTML5
Jamshid Hashimi
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
Bastian Hofmann
 
Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)
Dhyego Fernando
 
Using Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion Dollars
Mike Pack
 
HTML5 Introduction
HTML5 Introduction
dynamis
 

Viewers also liked (20)

Fsoft Introduction
Fsoft Introduction
LONG NGUYEN
 
Microservices at NewStore
Microservices at NewStore
Jan-Oliver Pantel
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
Future of Web Development
Future of Web Development
Zeno Rocha
 
future of web development
future of web development
Techberries
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
Spike Brehm
 
Microservices based Application Integration for SaaS, Hybrid Clouds and IoT
Microservices based Application Integration for SaaS, Hybrid Clouds and IoT
Bramh Gupta
 
Advanced Concepts in Software as a Service / Service Oriented Architecture
Advanced Concepts in Software as a Service / Service Oriented Architecture
Damon Carr
 
Enterprise DevOps in the Age of Docker & Microservices
Enterprise DevOps in the Age of Docker & Microservices
XebiaLabs
 
Full lifecycle of a microservice
Full lifecycle of a microservice
Luigi Bennardis
 
Chap 5 software as a service (saass)
Chap 5 software as a service (saass)
Raj Sarode
 
Microservices architecture overview v3
Microservices architecture overview v3
Dmitry Skaredov
 
SaaS Introduction-May2014
SaaS Introduction-May2014
Nguyen Tung
 
An introduction and overview to Software as a Service
An introduction and overview to Software as a Service
InTechnology Managed Services (part of Redcentric)
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 
Multi Tenancy In The Cloud
Multi Tenancy In The Cloud
rohit_ainapure
 
Architecting SaaS: Doing It Right the First Time
Architecting SaaS: Doing It Right the First Time
Serhiy (Serge) Haziyev
 
Open Architecture for Developing Multitenant Software-as-a-Service Applications
Open Architecture for Developing Multitenant Software-as-a-Service Applications
Javier Mijail Espadas Pech
 
How to build customizable multitenant web applications - IPC11 Spring Edition
How to build customizable multitenant web applications - IPC11 Spring Edition
Stephan Hochdörfer
 
DevOps, containers & microservices: Separating the hype from the reality
DevOps, containers & microservices: Separating the hype from the reality
Donnie Berkholz
 
Fsoft Introduction
Fsoft Introduction
LONG NGUYEN
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
Future of Web Development
Future of Web Development
Zeno Rocha
 
future of web development
future of web development
Techberries
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
Spike Brehm
 
Microservices based Application Integration for SaaS, Hybrid Clouds and IoT
Microservices based Application Integration for SaaS, Hybrid Clouds and IoT
Bramh Gupta
 
Advanced Concepts in Software as a Service / Service Oriented Architecture
Advanced Concepts in Software as a Service / Service Oriented Architecture
Damon Carr
 
Enterprise DevOps in the Age of Docker & Microservices
Enterprise DevOps in the Age of Docker & Microservices
XebiaLabs
 
Full lifecycle of a microservice
Full lifecycle of a microservice
Luigi Bennardis
 
Chap 5 software as a service (saass)
Chap 5 software as a service (saass)
Raj Sarode
 
Microservices architecture overview v3
Microservices architecture overview v3
Dmitry Skaredov
 
SaaS Introduction-May2014
SaaS Introduction-May2014
Nguyen Tung
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 
Multi Tenancy In The Cloud
Multi Tenancy In The Cloud
rohit_ainapure
 
Architecting SaaS: Doing It Right the First Time
Architecting SaaS: Doing It Right the First Time
Serhiy (Serge) Haziyev
 
Open Architecture for Developing Multitenant Software-as-a-Service Applications
Open Architecture for Developing Multitenant Software-as-a-Service Applications
Javier Mijail Espadas Pech
 
How to build customizable multitenant web applications - IPC11 Spring Edition
How to build customizable multitenant web applications - IPC11 Spring Edition
Stephan Hochdörfer
 
DevOps, containers & microservices: Separating the hype from the reality
DevOps, containers & microservices: Separating the hype from the reality
Donnie Berkholz
 
Ad

Similar to Introduction to web components (20)

Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
Fwdays
 
The Road to Native Web Components
The Road to Native Web Components
Mike North
 
Introduction to Web Components
Introduction to Web Components
Fu Cheng
 
BreizhBeans - Web components
BreizhBeans - Web components
Horacio Gonzalez
 
Polymer and web component
Polymer and web component
Imam Raza
 
Web Components
Web Components
FITC
 
Web Components Revolution
Web Components Revolution
Web Standards School
 
Web Components
Web Components
FITC
 
Modern Web UI - Web components
Modern Web UI - Web components
Mike North
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
Horacio Gonzalez
 
The Time for Vanilla Web Components has Arrived
The Time for Vanilla Web Components has Arrived
Gil Fink
 
Polymer 1.0
Polymer 1.0
Cyril Balit
 
Brownbag on basics of web components
Brownbag on basics of web components
Jason Park
 
Polymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web components
psstoev
 
Web Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.x
inovex GmbH
 
Web Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.x
PatrickHillert
 
Web Component
Web Component
偉格 高
 
Reaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and Polymer
FITC
 
Client side apps from the future
Client side apps from the future
Chad Hietala
 
Web components the future is here
Web components the future is here
Gil Fink
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
Fwdays
 
The Road to Native Web Components
The Road to Native Web Components
Mike North
 
Introduction to Web Components
Introduction to Web Components
Fu Cheng
 
BreizhBeans - Web components
BreizhBeans - Web components
Horacio Gonzalez
 
Polymer and web component
Polymer and web component
Imam Raza
 
Web Components
Web Components
FITC
 
Web Components
Web Components
FITC
 
Modern Web UI - Web components
Modern Web UI - Web components
Mike North
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
Horacio Gonzalez
 
The Time for Vanilla Web Components has Arrived
The Time for Vanilla Web Components has Arrived
Gil Fink
 
Brownbag on basics of web components
Brownbag on basics of web components
Jason Park
 
Polymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web components
psstoev
 
Web Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.x
inovex GmbH
 
Web Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.x
PatrickHillert
 
Reaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and Polymer
FITC
 
Client side apps from the future
Client side apps from the future
Chad Hietala
 
Web components the future is here
Web components the future is here
Gil Fink
 
Ad

More from Marc Bächinger (8)

HTML5 unplugged
HTML5 unplugged
Marc Bächinger
 
Modern web application network architecture
Modern web application network architecture
Marc Bächinger
 
JavaScript toolchain
JavaScript toolchain
Marc Bächinger
 
JQuery primer
JQuery primer
Marc Bächinger
 
With your bare hands
With your bare hands
Marc Bächinger
 
Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)
Marc Bächinger
 
Jax-rs-js Tutorial
Jax-rs-js Tutorial
Marc Bächinger
 
Html5 communication
Html5 communication
Marc Bächinger
 
Modern web application network architecture
Modern web application network architecture
Marc Bächinger
 
Architecting non-trivial browser applications (Jazoon 2012)
Architecting non-trivial browser applications (Jazoon 2012)
Marc Bächinger
 

Recently uploaded (20)

CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
digitaljignect
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
digitaljignect
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 

Introduction to web components