SlideShare a Scribd company logo
1 of 45
An Introduction To
Web Components
Kito Mann
Senior Web Developer
Keith Strickland
Co-Founder
Friday – 9:00 AM
Keith Strickland
Co-Founder
keith@redpillnow.com
@keithstric
redpillnow.comwww
Atlanta, Georgia
keithstric.me
Kito Mann
Senior Web Developer
kito@redpillnow.com
@kito99
redpillnow.comwww
Richmond, Virginia
kitomann
Challenge the way you think about Notes data
Change the way you approach your next project
Understand the potential of web components
UI Components are Everywhere
UI Components are Everywhere
UI Components are Everywhere
Component models have been popular since the early 90s
• LotusScript/Visual Basic
• Delphi
• PowerBuilder
• WinForms
• Windows Presentation Framework
• ASP.NET
• Swing
• JavaFX
• JavaServer Faces/XPages
UI Components are Everywhere
In the browser, component suites and frameworks must
invent their own models
• YUI
• KendoUI
• Bootstrap
• jQuery UI
• Infragistics
• AngularJS
• React
Why do We Build Components?
• Reusable UI functionality
– Within a single application
– Across multiple applications
You can focus on the core application functionality
Problem: HTML Markup Doesn't Support Components
We Work with
Abstractions
Programming model may be componentized, but native
markup is not
JSFDataTable
<p:dataTable var="car" value="#{dtPaginatorView.cars}" rows="10”
paginator="true” paginatorTemplate="{CurrentPageReport} {FirstPageLink}
{PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}
{RowsPerPageDropdown}”
rowsPerPageTemplate="5,10,15">
<p:column headerText="Id">
<h:outputText value="#{car.id}" />
</p:column>
<p:column headerText="Year">
<h:outputText value="#{car.year}" />
</p:column>
<p:column headerText="Brand">
<h:outputText value="#{car.brand}" />
</p:column>
<p:column headerText="Color">
<h:outputText value="#{car.color}" />
</p:column>
</p:dataTable>
BootstrapDropdwons
<div class="dropdown">
<button class="btn btn-default dropdown-toggle"
type="button" id="dropdownMenu1" data-toggle="dropdown"
aria-expanded="true">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu"
aria-labelledby="dropdownMenu1">
<li role="presentation"><a role="menuitem" tabindex="-
1" href="#">Action</a></li>
<li role="presentation"><a role="menuitem" tabindex="-
1" href="#">Another action</a></li>
<li role="presentation"><a role="menuitem" tabindex="-
1" href="#">Something else here</a></li>
<li role="presentation"><a role="menuitem" tabindex="-
1" href="#">Separated link</a></li>
</ul>
</div>
jQueryUITabs <div id="tabs">
<ul>
<li><a href="#tabs-1">Nunc tincidunt</a></li>
<li><a href="#tabs-2">Proin dolor</a></li>
<li><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1">
...
</div>
<div id="tabs-2">
...
</div>
<div id="tabs-3">
...
</div>
Web Components
bring a native
component model to
HTML
What is a Web Component?
WhatisaWeb
Component?
<paper-action-dialog backdrop autoCloseDisabled
layered="false">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.</p>
<paper-button affirmative autofocus>Tap me to close
</paper-button>
</paper-action-dialog>
Works together
Works the same
Works anywhere
Demo: Custom Elements
CustomElements
<simple-counter class="counter" start="10"/>
CustomElements
class SimpleCounter extends HTMLElement {
constructor() {
super();
this.count = 0;
this.timer = null;
this.innerText = "Simple Counter";
}
connectedCallback() {
this.count = Number(this.getAttribute("start")) || 0;
this.start();
};
disconnectedCallback() {
this.stop();
};
attributeChangedCallback(attr, oldVal, newVal) {
if (attr == "start") {
this.count = Number(newVal);
}
}
adoptedCallback() {
console.log("Someone adopted me!", this);
}
CustomElements
start() {
var _self = this;
this.timer = setInterval(function() {
_self.count = _self.count + 1;
_self.update(_self.count);
}, 2000);
}
stop() {
clearInterval(this.timer);
this.timer = null;
}
update(counterValue) {
this.innerHTML = counterValue;
}
}
window.customElements.define('simple-counter',
SimpleCounter);
HTMLTemplates <template id="template">
<div id="inner-div">
<div>Inside the template, baby!</div>
</div>
</template>
<script>
var templateClone = document.importNode(
document.querySelector("#template").content, true);
var body = document.querySelector("body");
body.appendChild(templateClone);
var templateClone2 = document.importNode(
document.querySelector("#template").content, true);
body.appendChild(templateClone2);
</script>
HTML Templates
HTMLImports:using
Bootstraptoday <head>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.m
in.js"></script>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.j
s"></script>
<![endif]-->
</head>
<body>
...
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.
2/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
HTMLImports:
bootstrap.html
<link href="css/bootstrap.min.css" rel="stylesheet">
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.
js"></script>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js">
</script>
<![endif]-->
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/j
query.min.js"></script>
<script src="js/bootstrap.min.js"></script>
HTMLImports:
ImportingBootstrap
<head>
...
<link rel="import" src="imports/bootstrap.html"/>
</head>
<body>
...
</body>
Demo: Shadow DOM
ShadowDOM
class DeluxeCounter extends SimpleCounter {
constructor() {
super();
this.innerHTML = '';
this.counterDiv = document.createElement('div');
this.counterDiv.innerText = "Deluxe Counter";
var root = this.createShadowRoot();
root.appendChild(this.counterDiv);
var _self = this;
this.onclick = function() {
if (_self.timer == null) {
_self.start();
}
else {
_self.stop();
}
}
}
...
}
Browser Support
• Chrome/Android and Opera support everything
• IE doesn't support anything
• All other browsers support HTML Templates
• Shadow DOM and Custom Elements in development for
Firefox and Safari
– "Under consideration" for Edge; likely to be added later
• HTML Imports not supported in other browsers
– "Under consideration" for Edge; not planned in Firefox and
Safari
polyfill
[pol-ee-fill] noun
In web development, a polyfill (or polyfiller) is downloadable
code which provides facilities that are not built into a web
browser. It implements technology that a developer expects
the browser to provide natively, providing a more uniform API
landscape. For example, many features of HTML5 are not
supported by versions of Internet Explorer older than version 8
or 9, but can be used by web pages if those pages install a
polyfill. Web shims and HTML5 Shivs are related concepts.
-- Wikipedia
Closing the Browser Gap
Browser Support for webcomponents.js
Closing the Browser Gap
Browser Support for X-Tag
Writing Web Components
Polymer
Polymer
• Open source library for building web components
• Simplified programming model
• Two-way data binding
• Declarative event handling
• Behaviors (mixins)
• Property observation
• Extensive set of tools
– Build, testing, designer, etc.
• Used in over 4 million web pages
Polymer
• Developed by and used internally by Google
• Used in over 400 Google projects
– Over 1 billion users
– Over 4,000 custom web components
– Examples: Chrome, Play, Fi, YouTube Gaming, and
Translate, Patents
• Heavily promoted
– Polymer Summit
– Polycasts
Web Components in the Wild
• Component Suites
– Polymer Element Catalog
– Bosonic
– GE Predix UI
– Strand Web Components
– Vaadin Elements
• Directory
– customelements.io
• Uplabs (inspiration)
Polymer Element Catalog
Web components built by Google using Polymer
Demos:
Polymer Element Catalog
customelements.io
Web Components in the Wild
• Companies
– GE
– Comcast
– Atlassian
– GitHub
– Salesforce
• Non-Google Applications
– USA Today Rio Olympic Site
– simpla.io
– Red Pill DIG
Demo: Red Pill DIG
An Introduction to Web Components

More Related Content

What's hot

Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...
Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...
Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...Mark Roden
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Slobodan Lohja
 
IBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino ApplicationsIBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino ApplicationsEd Brill
 
Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Ivano Malavolta
 
Presenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlPresenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlTeamstudio
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLInside Analysis
 
One Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The CloudOne Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The CloudKeith Brooks
 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationJesse Gallagher
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt AEM HUB
 
10 things you can do to speed up your web app today 2016
10 things you can do to speed up your web app today 201610 things you can do to speed up your web app today 2016
10 things you can do to speed up your web app today 2016Chris Love
 
AD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixAD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixMartin Donnelly
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneTeamstudio
 
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good ServerIBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good ServerSerdar Basegmez
 
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...Alan Hamilton
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)Sascha Wenninger
 

What's hot (20)

Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...
Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...
Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrifici...
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
 
IBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino ApplicationsIBM Connect 2017: Refresh and Extend IBM Domino Applications
IBM Connect 2017: Refresh and Extend IBM Domino Applications
 
Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
NodeJs-resume
NodeJs-resumeNodeJs-resume
NodeJs-resume
 
Presenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlPresenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View Control
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQL
 
One Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The CloudOne Firm's Wild Ride to The Cloud
One Firm's Wild Ride to The Cloud
 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections Integration
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
 
10 things you can do to speed up your web app today 2016
10 things you can do to speed up your web app today 201610 things you can do to speed up your web app today 2016
10 things you can do to speed up your web app today 2016
 
AD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixAD1542 Get Hands On With Bluemix
AD1542 Get Hands On With Bluemix
 
[Delimon] Unraveling Teams vs Skype for Business
[Delimon] Unraveling Teams vs Skype for Business[Delimon] Unraveling Teams vs Skype for Business
[Delimon] Unraveling Teams vs Skype for Business
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
 
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good ServerIBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
 
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...
Unlocking the OGS: Building Cognitive Solutions with IBM Domino, Watson and B...
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation Portal
 
An Introduction to Lightning Web Components
An Introduction to Lightning Web ComponentsAn Introduction to Lightning Web Components
An Introduction to Lightning Web Components
 

Viewers also liked

Reaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and PolymerReaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and PolymerFITC
 
Review: Wellness technology in the workplace
Review: Wellness technology in the workplace Review: Wellness technology in the workplace
Review: Wellness technology in the workplace Reward Gateway
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphsRed Pill Now
 
Break Your Designer Dependency
Break Your Designer DependencyBreak Your Designer Dependency
Break Your Designer DependencyRed Pill Now
 
The Lotus Position: Four Degrees of Freedom
The Lotus Position: Four Degrees of FreedomThe Lotus Position: Four Degrees of Freedom
The Lotus Position: Four Degrees of FreedomRed Pill Now
 
Assistive Technology in the Workplace
Assistive Technology in the WorkplaceAssistive Technology in the Workplace
Assistive Technology in the WorkplaceFred Hobbs
 
Best practices for optimizing performance and reducing costs when selecting a...
Best practices for optimizing performance and reducing costs when selecting a...Best practices for optimizing performance and reducing costs when selecting a...
Best practices for optimizing performance and reducing costs when selecting a...Design World
 
GL Optic Optical Spectrophotometers from Saelig
GL Optic Optical Spectrophotometers from SaeligGL Optic Optical Spectrophotometers from Saelig
GL Optic Optical Spectrophotometers from SaeligAlan Lowne
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomRed Pill Now
 
MEMS Sensors Overview
MEMS Sensors OverviewMEMS Sensors Overview
MEMS Sensors OverviewJennifer Chin
 
Innovate in new and exciting optical sensing applications in industrial marke...
Innovate in new and exciting optical sensing applications in industrial marke...Innovate in new and exciting optical sensing applications in industrial marke...
Innovate in new and exciting optical sensing applications in industrial marke...Design World
 
A World Without Applications
A World Without ApplicationsA World Without Applications
A World Without ApplicationsRed Pill Now
 
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...Bryan K. O'Rourke
 

Viewers also liked (20)

Where's Domino?
Where's Domino?Where's Domino?
Where's Domino?
 
Reaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and PolymerReaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and Polymer
 
HTML5 Web Components
HTML5 Web ComponentsHTML5 Web Components
HTML5 Web Components
 
Review: Wellness technology in the workplace
Review: Wellness technology in the workplace Review: Wellness technology in the workplace
Review: Wellness technology in the workplace
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphs
 
Break Your Designer Dependency
Break Your Designer DependencyBreak Your Designer Dependency
Break Your Designer Dependency
 
Rethinking Notes
Rethinking NotesRethinking Notes
Rethinking Notes
 
The Lotus Position: Four Degrees of Freedom
The Lotus Position: Four Degrees of FreedomThe Lotus Position: Four Degrees of Freedom
The Lotus Position: Four Degrees of Freedom
 
Once You Go Graph
Once You Go GraphOnce You Go Graph
Once You Go Graph
 
Assistive Technology in the Workplace
Assistive Technology in the WorkplaceAssistive Technology in the Workplace
Assistive Technology in the Workplace
 
Graphs in Action
Graphs in ActionGraphs in Action
Graphs in Action
 
Best practices for optimizing performance and reducing costs when selecting a...
Best practices for optimizing performance and reducing costs when selecting a...Best practices for optimizing performance and reducing costs when selecting a...
Best practices for optimizing performance and reducing costs when selecting a...
 
Design Matters
Design MattersDesign Matters
Design Matters
 
GL Optic Optical Spectrophotometers from Saelig
GL Optic Optical Spectrophotometers from SaeligGL Optic Optical Spectrophotometers from Saelig
GL Optic Optical Spectrophotometers from Saelig
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of Freedom
 
MEMS Sensors Overview
MEMS Sensors OverviewMEMS Sensors Overview
MEMS Sensors Overview
 
Blending
BlendingBlending
Blending
 
Innovate in new and exciting optical sensing applications in industrial marke...
Innovate in new and exciting optical sensing applications in industrial marke...Innovate in new and exciting optical sensing applications in industrial marke...
Innovate in new and exciting optical sensing applications in industrial marke...
 
A World Without Applications
A World Without ApplicationsA World Without Applications
A World Without Applications
 
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...
Poised For Growth. Digital And The Future Of A Rapidly Expanding Fitness Indu...
 

Similar to An Introduction to Web Components

James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patternsakqaanoraks
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and howProgressive Web Apps. What, why and how
Progressive Web Apps. What, why and howRiza Fahmi
 
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)Tech in Asia ID
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB
 
LvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemLvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemVlad Fedosov
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullySpringPeople
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008Caleb Jenkins
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
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 ...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
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaAgile Testing Alliance
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedGil Fink
 
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Kai Wähner
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesTikal Knowledge
 
German introduction to sp framework
German   introduction to sp frameworkGerman   introduction to sp framework
German introduction to sp frameworkBob German
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Lucas Jellema
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use itnspyre_net
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentRandy Connolly
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Melania Andrisan (Danciu)
 
MongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB
 

Similar to An Introduction to Web Components (20)

James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patterns
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and howProgressive Web Apps. What, why and how
Progressive Web Apps. What, why and how
 
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
 
LvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemLvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design System
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
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 ...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 ...
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
German introduction to sp framework
German   introduction to sp frameworkGerman   introduction to sp framework
German introduction to sp framework
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use it
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017
 
MongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch Tutorial
 

More from Red Pill Now

M is for modernization
M is for modernizationM is for modernization
M is for modernizationRed Pill Now
 
Take 5 Modernization Workshop
Take 5 Modernization WorkshopTake 5 Modernization Workshop
Take 5 Modernization WorkshopRed Pill Now
 
Reusability is the goal
Reusability is the goalReusability is the goal
Reusability is the goalRed Pill Now
 
The internet of (Notes) Things
The internet of (Notes) ThingsThe internet of (Notes) Things
The internet of (Notes) ThingsRed Pill Now
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025Red Pill Now
 
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now
 
Design for the Visually Impaired
Design for the Visually ImpairedDesign for the Visually Impaired
Design for the Visually ImpairedRed Pill Now
 
Migration Verus Modernization
Migration Verus ModernizationMigration Verus Modernization
Migration Verus ModernizationRed Pill Now
 
I Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingI Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingRed Pill Now
 
IBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperIBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperRed Pill Now
 
FIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowFIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowRed Pill Now
 
Influencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignInfluencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignRed Pill Now
 
Big Data With Graphs
Big  Data With GraphsBig  Data With Graphs
Big Data With GraphsRed Pill Now
 
The Internet of (Notes) Things
The Internet of (Notes) ThingsThe Internet of (Notes) Things
The Internet of (Notes) ThingsRed Pill Now
 
M is for modernization
M is for modernizationM is for modernization
M is for modernizationRed Pill Now
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With GraphsRed Pill Now
 
IBM Connect 2016 Recap
IBM Connect 2016 RecapIBM Connect 2016 Recap
IBM Connect 2016 RecapRed Pill Now
 

More from Red Pill Now (20)

M is for modernization
M is for modernizationM is for modernization
M is for modernization
 
Take 5 Modernization Workshop
Take 5 Modernization WorkshopTake 5 Modernization Workshop
Take 5 Modernization Workshop
 
Reusability is the goal
Reusability is the goalReusability is the goal
Reusability is the goal
 
The internet of (Notes) Things
The internet of (Notes) ThingsThe internet of (Notes) Things
The internet of (Notes) Things
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025
 
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
 
Design for the Visually Impaired
Design for the Visually ImpairedDesign for the Visually Impaired
Design for the Visually Impaired
 
Migration Verus Modernization
Migration Verus ModernizationMigration Verus Modernization
Migration Verus Modernization
 
I Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingI Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application Testing
 
IBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperIBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes Developer
 
FIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowFIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill Now
 
Influencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignInfluencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page Design
 
The PRPL Pattern
The PRPL PatternThe PRPL Pattern
The PRPL Pattern
 
Big Data With Graphs
Big  Data With GraphsBig  Data With Graphs
Big Data With Graphs
 
The Internet of (Notes) Things
The Internet of (Notes) ThingsThe Internet of (Notes) Things
The Internet of (Notes) Things
 
M is for modernization
M is for modernizationM is for modernization
M is for modernization
 
Digging for Gold
Digging for GoldDigging for Gold
Digging for Gold
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
 
Beyond XPages
Beyond XPagesBeyond XPages
Beyond XPages
 
IBM Connect 2016 Recap
IBM Connect 2016 RecapIBM Connect 2016 Recap
IBM Connect 2016 Recap
 

Recently uploaded

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Recently uploaded (20)

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

An Introduction to Web Components

  • 1. An Introduction To Web Components Kito Mann Senior Web Developer Keith Strickland Co-Founder Friday – 9:00 AM
  • 3. Kito Mann Senior Web Developer kito@redpillnow.com @kito99 redpillnow.comwww Richmond, Virginia kitomann
  • 4. Challenge the way you think about Notes data
  • 5. Change the way you approach your next project
  • 6. Understand the potential of web components
  • 7. UI Components are Everywhere
  • 8. UI Components are Everywhere
  • 9. UI Components are Everywhere Component models have been popular since the early 90s • LotusScript/Visual Basic • Delphi • PowerBuilder • WinForms • Windows Presentation Framework • ASP.NET • Swing • JavaFX • JavaServer Faces/XPages
  • 10. UI Components are Everywhere In the browser, component suites and frameworks must invent their own models • YUI • KendoUI • Bootstrap • jQuery UI • Infragistics • AngularJS • React
  • 11. Why do We Build Components? • Reusable UI functionality – Within a single application – Across multiple applications You can focus on the core application functionality
  • 12. Problem: HTML Markup Doesn't Support Components
  • 13. We Work with Abstractions Programming model may be componentized, but native markup is not
  • 14. JSFDataTable <p:dataTable var="car" value="#{dtPaginatorView.cars}" rows="10” paginator="true” paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}” rowsPerPageTemplate="5,10,15"> <p:column headerText="Id"> <h:outputText value="#{car.id}" /> </p:column> <p:column headerText="Year"> <h:outputText value="#{car.year}" /> </p:column> <p:column headerText="Brand"> <h:outputText value="#{car.brand}" /> </p:column> <p:column headerText="Color"> <h:outputText value="#{car.color}" /> </p:column> </p:dataTable>
  • 15. BootstrapDropdwons <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-expanded="true"> Dropdown <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <li role="presentation"><a role="menuitem" tabindex="- 1" href="#">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="- 1" href="#">Another action</a></li> <li role="presentation"><a role="menuitem" tabindex="- 1" href="#">Something else here</a></li> <li role="presentation"><a role="menuitem" tabindex="- 1" href="#">Separated link</a></li> </ul> </div>
  • 16. jQueryUITabs <div id="tabs"> <ul> <li><a href="#tabs-1">Nunc tincidunt</a></li> <li><a href="#tabs-2">Proin dolor</a></li> <li><a href="#tabs-3">Aenean lacinia</a></li> </ul> <div id="tabs-1"> ... </div> <div id="tabs-2"> ... </div> <div id="tabs-3"> ... </div>
  • 17. Web Components bring a native component model to HTML
  • 18. What is a Web Component?
  • 19. WhatisaWeb Component? <paper-action-dialog backdrop autoCloseDisabled layered="false"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> <paper-button affirmative autofocus>Tap me to close </paper-button> </paper-action-dialog>
  • 20. Works together Works the same Works anywhere
  • 21.
  • 24. CustomElements class SimpleCounter extends HTMLElement { constructor() { super(); this.count = 0; this.timer = null; this.innerText = "Simple Counter"; } connectedCallback() { this.count = Number(this.getAttribute("start")) || 0; this.start(); }; disconnectedCallback() { this.stop(); }; attributeChangedCallback(attr, oldVal, newVal) { if (attr == "start") { this.count = Number(newVal); } } adoptedCallback() { console.log("Someone adopted me!", this); }
  • 25. CustomElements start() { var _self = this; this.timer = setInterval(function() { _self.count = _self.count + 1; _self.update(_self.count); }, 2000); } stop() { clearInterval(this.timer); this.timer = null; } update(counterValue) { this.innerHTML = counterValue; } } window.customElements.define('simple-counter', SimpleCounter);
  • 26. HTMLTemplates <template id="template"> <div id="inner-div"> <div>Inside the template, baby!</div> </div> </template> <script> var templateClone = document.importNode( document.querySelector("#template").content, true); var body = document.querySelector("body"); body.appendChild(templateClone); var templateClone2 = document.importNode( document.querySelector("#template").content, true); body.appendChild(templateClone2); </script>
  • 28. HTMLImports:using Bootstraptoday <head> <!-- Bootstrap --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.m in.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.j s"></script> <![endif]--> </head> <body> ... <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11. 2/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body>
  • 29. HTMLImports: bootstrap.html <link href="css/bootstrap.min.css" rel="stylesheet"> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min. js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"> </script> <![endif]--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/j query.min.js"></script> <script src="js/bootstrap.min.js"></script>
  • 32. ShadowDOM class DeluxeCounter extends SimpleCounter { constructor() { super(); this.innerHTML = ''; this.counterDiv = document.createElement('div'); this.counterDiv.innerText = "Deluxe Counter"; var root = this.createShadowRoot(); root.appendChild(this.counterDiv); var _self = this; this.onclick = function() { if (_self.timer == null) { _self.start(); } else { _self.stop(); } } } ... }
  • 33. Browser Support • Chrome/Android and Opera support everything • IE doesn't support anything • All other browsers support HTML Templates • Shadow DOM and Custom Elements in development for Firefox and Safari – "Under consideration" for Edge; likely to be added later • HTML Imports not supported in other browsers – "Under consideration" for Edge; not planned in Firefox and Safari
  • 34. polyfill [pol-ee-fill] noun In web development, a polyfill (or polyfiller) is downloadable code which provides facilities that are not built into a web browser. It implements technology that a developer expects the browser to provide natively, providing a more uniform API landscape. For example, many features of HTML5 are not supported by versions of Internet Explorer older than version 8 or 9, but can be used by web pages if those pages install a polyfill. Web shims and HTML5 Shivs are related concepts. -- Wikipedia
  • 35. Closing the Browser Gap Browser Support for webcomponents.js
  • 36. Closing the Browser Gap Browser Support for X-Tag
  • 38. Polymer • Open source library for building web components • Simplified programming model • Two-way data binding • Declarative event handling • Behaviors (mixins) • Property observation • Extensive set of tools – Build, testing, designer, etc. • Used in over 4 million web pages
  • 39. Polymer • Developed by and used internally by Google • Used in over 400 Google projects – Over 1 billion users – Over 4,000 custom web components – Examples: Chrome, Play, Fi, YouTube Gaming, and Translate, Patents • Heavily promoted – Polymer Summit – Polycasts
  • 40. Web Components in the Wild • Component Suites – Polymer Element Catalog – Bosonic – GE Predix UI – Strand Web Components – Vaadin Elements • Directory – customelements.io • Uplabs (inspiration)
  • 41. Polymer Element Catalog Web components built by Google using Polymer
  • 43. Web Components in the Wild • Companies – GE – Comcast – Atlassian – GitHub – Salesforce • Non-Google Applications – USA Today Rio Olympic Site – simpla.io – Red Pill DIG

Editor's Notes

  1. S
  2. /labs/custom-elements/simple-counter-demo-es-2015.html