SlideShare a Scribd company logo
(WEB?) COMPONENTS IN
PRODUCTION
AMAZON WEB SERVICES
 
SERVICE TEAMS
Small
Strong ownership
Independence
NO GOLDEN HAMMER
Pick what works best for your team.
This includes processes, languages, and tools.
There is no single answer.
DEVELOPERS ❤ JS FRAMEWORKS
200X: jQuery, MooTools, Prototype & script.aculo.us
2010: Ext JS
2011: Google Web Toolkit
2012: Backbone.js
2013: Ember.js
2014: AngularJS
2015: React
2016: Angular 2?
... to be continued
SO HOW CAN WE
HELP OUR TEAMS?
CHOCOLATE
FACTORY
INCREASE DEVELOPER
HAPPINESS AND PRODUCTIVITY!
OPTION 1
DESIGN GUIDE
Rather low initial cost
Derive patterns from what you already have
One time cost to implement per JS framework
N-time cost of continuous changes to style guide
Very high cost to enforce compliance
Hard to make sure it doesn't contradict itself
OPTION 2
CSS FRAMEWORK
Much better!
Render example pages and use cases
But CSS de nes Markup
No clear boundary of ownership / CSS overwrites
Can't incorporate a11y and functionality
Hard to maintain and update
OPTION 3
SOMETHING IN CODE THAT ...
Supports all frontend frameworks
Supports currently used browsers
Decouples style and markup
Is performant
Is accessible
Has tests and a deployment strategy
And last but not least a contribution model
WEB COMPONENTS
TO THE RESCUE!
Chrome Firefox Internet
Explorer
Edge Safari
Templates
HTML Imports
Custom Elements
Shadow DOM
POLYFILLS ARE ASYNC BY NATURE
MISSING FRAMEWORK INTEGRATION
WEB COMPONENTS
TO THE RESCUE!
IDEAS WE KEPT
Custom elements
Style encapsulation
De ned API
ARCHITECTURE
Components
Framework Wrapper
Runtime
Browser Environment
RUNTIME
Custom element declaration and lifecycle
Custom events, property and region handling
Render engine (mithril)
Validation of property types
Metrics
FRAMEWORK WRAPPER
GWT
AngularJS
React
Angular 2 (prototype)
Web Components (hack day)
FRAMEWORK WRAPPER
FOR ANGULARJS
The AngularJS wrapper is a script that declares
an Angular directive for each component at runtime.
FRAMEWORK WRAPPER
FOR REACT
We have a wrapper around the React.createClass function that
converts our component speci cations to the native React components.
FRAMEWORK WRAPPER
FOR GWT
A library that provides a GWT Widget API class for each component.
These classes are generated at build-time.
OKAY, ...
SHOW ME A COMPONENT
DEMO
CodeFest
2010
<awsui-conference>
<div class="awsui-conference">
<div class="awsui logo red"></div>
CodeFest 2010
</div>
</awsui-conference>
COMPONENT'S CODE
AwsUi.__addComponent('awsui-conference', {
properties: {
title: { type: 'string' },
counter: { type: 'integer', defaultValue: 2010 }
},
render(m, h) {
const component = this;
const color = this.counter % 2 === 0 ? 'red' : 'purple';
const logo = m('div',
h.copyDefined({ className: `awsui logo ${color}` }));
return m('div', h.copyDefined({
className: 'awsui-conference',
onclick: () => component.counter++
}), [logo, `${component.title} ${this.counter}`]);
}
});
VANILLA JAVASCRIPT
<script src="js/awsui.min.js"></script>
<script src="js/awsui-conference.js"></script>
const node = AwsUi.createComponent('awsui-conference');
node.component.title = 'CodeFest';
document.body.appendChild(node);
REACT
<script src="js/awsui.min.js"></script>
<script src="js/awsui-react.min.js"></script>
<script src="js/awsui-conference.js"></script>
import React, { Component } from 'react';
export default class FancyPage extends Component {
render() {
return (<Conference title="CodeFest"/>);
}
}
ANGULAR
<script src="js/awsui.min.js"></script>
<script src="js/awsui-angular.min.js"></script>
<script src="js/awsui-conference.js"></script>
<div ng-controller="Data">
<awsui-conference title="{{name}}"></awsui-conference>
</div>
AND EVEN GWT
import com.amazonaws.ui.gwt.js.client.AwsUiInjector;
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:awsui="urn:import:com.amazonaws.ui.gwt.widget.components">
<awsui:Conference title="CodeFest"/>
</ui:UiBinder>
IT WORKS!
BENEFITS WE SAW
On-boarding new teams is less than one day of work
Teams are compliant out of the box
Zero or low e ort for teams after design changes
Sparked community engagement and contribution
LESSONS LEARNED
It was a hard decision to re-invent some things, but it payed o
SLA is key to build trust
Our teams liked having form elements most
Even implementing a tooltip component can be a challenge
CODIFY YOUR STYLE GUIDES!
USAGE OF OUR COMPONENTS
FUTURE
Grow our team in Berlin and Seattle
Build more tools that help frontend developers and designers
Open source what we have done
THANK YOU
CODEFEST.RU
Thomas
Denis
@tlobinger
@pragmadash

More Related Content

PDF
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
PPTX
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
PPTX
React Vs AnagularJS
PPTX
Angular vs React: Building modern SharePoint interfaces with SPFx
PDF
Angular 2 vs React
PDF
Grokking #9: Building a real-time and offline editing service with Couchbase
PPTX
Demand driven applications with om.next and react native
PDF
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
React Vs AnagularJS
Angular vs React: Building modern SharePoint interfaces with SPFx
Angular 2 vs React
Grokking #9: Building a real-time and offline editing service with Couchbase
Demand driven applications with om.next and react native
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”

What's hot (20)

PDF
Introduction to React Native
PDF
Blazor introduction
PPTX
We come in peace hybrid development with web assembly - Maayan Hanin
PPTX
Azure Web Jobs
PPTX
ASP.NET MVC, AngularJS CRUD for Azerbaijan Technical University
PDF
Why NodeJS
PPTX
Lazy angular w/ webpack
PPT
Introduction to Vaadin
PDF
REST to JavaScript for Better Client-side Development
PDF
Deep dive into Vue.js
PDF
introduction to Vue.js 3
PDF
AngularJS + React
PDF
Node, express & sails
PDF
Play Framework on Google App Engine
PPTX
Building Reliable Applications Using React, .NET & Azure
PDF
Microsoft Azure Websites Webjobs
PPTX
React js Online Training
PPTX
Vue micro frontend implementation patterns
PPTX
Intro to Azure Webjobs
Introduction to React Native
Blazor introduction
We come in peace hybrid development with web assembly - Maayan Hanin
Azure Web Jobs
ASP.NET MVC, AngularJS CRUD for Azerbaijan Technical University
Why NodeJS
Lazy angular w/ webpack
Introduction to Vaadin
REST to JavaScript for Better Client-side Development
Deep dive into Vue.js
introduction to Vue.js 3
AngularJS + React
Node, express & sails
Play Framework on Google App Engine
Building Reliable Applications Using React, .NET & Azure
Microsoft Azure Websites Webjobs
React js Online Training
Vue micro frontend implementation patterns
Intro to Azure Webjobs
Ad

Viewers also liked (6)

PDF
Вячеслав Бахмутов
PDF
Андрей Ситник
PPTX
Антон Турецкий
PDF
Иван Фролков
PDF
Антон Галицын
PDF
Вадим Макеев
Вячеслав Бахмутов
Андрей Ситник
Антон Турецкий
Иван Фролков
Антон Галицын
Вадим Макеев
Ad

Similar to Thomas Lobinger (20)

PDF
Thinking in Components
PPTX
Professionalizing the Front-end
PPTX
Google web toolkit web conference presenation
PDF
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
PDF
Choosing Javascript Libraries to Adopt for Development
PPTX
Web Development and Web Development technologies - Temitayo Fadojutimi
PDF
Meetup - Building by Composition - Samuel Jesus
PDF
Selecting the Best Javascript Web Framework
PDF
Modern front-end Workflow
PDF
Front end-modernization
PDF
Front end-modernization
PDF
Front-End Modernization for Mortals
PDF
Cross-platform UI Engines Rendering Performance
PDF
React for non techies
PPTX
My 70-480 HTML5 certification learning
PDF
Fullstack Web Components Complete Guide to Building UI Libraries with Web Com...
PDF
Building a js widget
PDF
Gwt.Create Keynote San Francisco
PDF
React for Non Techies
PDF
React for non techies
Thinking in Components
Professionalizing the Front-end
Google web toolkit web conference presenation
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
Choosing Javascript Libraries to Adopt for Development
Web Development and Web Development technologies - Temitayo Fadojutimi
Meetup - Building by Composition - Samuel Jesus
Selecting the Best Javascript Web Framework
Modern front-end Workflow
Front end-modernization
Front end-modernization
Front-End Modernization for Mortals
Cross-platform UI Engines Rendering Performance
React for non techies
My 70-480 HTML5 certification learning
Fullstack Web Components Complete Guide to Building UI Libraries with Web Com...
Building a js widget
Gwt.Create Keynote San Francisco
React for Non Techies
React for non techies

More from CodeFest (20)

PDF
Alexander Graebe
PDF
Никита Прокопов
PPTX
Денис Баталов
PDF
Елена Гальцина
PDF
Александр Калашников
PDF
Ирина Иванова
PDF
Marko Berković
PDF
Денис Кортунов
PDF
Александр Зимин
PDF
Сергей Крапивенский
PDF
Сергей Игнатов
PDF
Николай Крапивный
PDF
Alexander Graebe
PDF
Вадим Смирнов
PDF
Константин Осипов
PDF
Raffaele Rialdi
PDF
Максим Пугачев
PDF
Rene Groeschke
PDF
Иван Бондаренко
PDF
Mete Atamel
Alexander Graebe
Никита Прокопов
Денис Баталов
Елена Гальцина
Александр Калашников
Ирина Иванова
Marko Berković
Денис Кортунов
Александр Зимин
Сергей Крапивенский
Сергей Игнатов
Николай Крапивный
Alexander Graebe
Вадим Смирнов
Константин Осипов
Raffaele Rialdi
Максим Пугачев
Rene Groeschke
Иван Бондаренко
Mete Atamel

Recently uploaded (20)

PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
System and Network Administraation Chapter 3
PPTX
L1 - Introduction to python Backend.pptx
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
assetexplorer- product-overview - presentation
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
top salesforce developer skills in 2025.pdf
PPTX
Introduction to Artificial Intelligence
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Transform Your Business with a Software ERP System
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
Nekopoi APK 2025 free lastest update
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Digital Strategies for Manufacturing Companies
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Adobe Illustrator 28.6 Crack My Vision of Vector Design
System and Network Administraation Chapter 3
L1 - Introduction to python Backend.pptx
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Which alternative to Crystal Reports is best for small or large businesses.pdf
assetexplorer- product-overview - presentation
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
top salesforce developer skills in 2025.pdf
Introduction to Artificial Intelligence
PTS Company Brochure 2025 (1).pdf.......
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Design an Analysis of Algorithms II-SECS-1021-03
Transform Your Business with a Software ERP System
How to Choose the Right IT Partner for Your Business in Malaysia
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Nekopoi APK 2025 free lastest update
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Digital Strategies for Manufacturing Companies
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises

Thomas Lobinger