SlideShare uma empresa Scribd logo
WEB COMPONENTS
Mais simples e produtivo com Polymer!
Andrew Willard
28 anos, Campinas / SP
Analista de Sistemas
Pós Graduado em Engenharia Software
Líder Técnico de
Front End Web
Web components: mais simples e produtivo com polymer!
Web components: mais simples e produtivo com polymer!
Web components: mais simples e produtivo com polymer!
Afinal, o que são os
WEB COMPONENTS?
SHADOW DOM
TEMPLATES
HTML IMPORTS
CUSTOM ELEMENTS
<video controls poster="poster.png">
<source src="video.webm" type='video/webm;codecs="vp8, vorbis"' />
<source src="video.mp4" type='video/mp4;codecs="avc1.42E01E, mp4a.40.2"' />
<track src="video.vtt" label="Portuguese subtitles" kind="subtitles" srclang="pt-br"
default></track>
</video>
LIGHTING DOM
<video controls poster="poster.png">
<div style="display: none"></div>
<div>
<div>
<input type="button">
<input type="range" step="any" max="70.112">
<div style="display: none;">0:00</div>
<div>1:10</div>
<input type="button">
<input type="range" step="any" max="1">
<input type="button">
<input type="button">
</div>
</div>
</div>
<source src="video.webm" type='video/webm;codecs="vp8, vorbis"' />
<source src="video.mp4" type='video/mp4;codecs="avc1.42E01E, mp4a.40.2"' />
<track src="video.vtt" label="Portuguese subtitles" kind="subtitles" srclang="pt-br" default></track>
</video>
SHADOW DOM
Template é um DocumentFragment que pode ser reaproveitado
<template id=”item”>
<img>
<div>
<p class=”title”></p>
<p></p>
</div>
<checkbox class=”star”>
</checkbox>
</template>
index.html
<link rel=”import” href=”date-picker.html”>
<link rel=”import” href=”timezone-date.html”>
date-picker.html
<link rel=”import” href=”moment-import.html”>
timezone-date.html
<link rel=”import” href=”moment-import.html”>
moment-import.html
<script src=”moment/moment.js”>
class FlagIcon extends HTMLElement {
constructor() {
super();
this._countryCode = null;
}
get country() {
return this._countryCode;
}
set country(v) {
this.setAttribute("country", v);
}
}
class PlasticButton extends HTMLButtonElement {
constructor() {
super();
this.addEventListener("click", () => {
// Executar uma animação super descolada!
});
}
}
Crie seus próprios
elementos!
Web components: mais simples e produtivo com polymer!
<link rel="import" href="another-element.html">
<dom-module id="element-name">
<template>
<style>
/* Estilos, variáveis e mixers CSS */
</style>
<!-- local DOM do seu elemento -->
<div>{{greeting}}</div> <!-- data bindings no DOM do elemento -->
</template>
<script>
// registro do elemento
Polymer({
is: "element-name",
// Propriedades e métodos do prototype do seu elemento
properties: {
// properties públicas do elemento
greeting: {
type: String,
value: "Hello!"
}
}
});
</script>
</dom-module>
<link rel="import" href="another-element.html">
<dom-module id="element-name">
<template>
<style>
/* Estilos, variáveis e mixers CSS */
</style>
<!-- local DOM do seu elemento -->
<div>{{greeting}}</div> <!-- data bindings no DOM do elemento -->
</template>
<script>
// registro do elemento
Polymer({
is: "element-name",
// Propriedades e métodos do prototype do seu elemento
properties: {
// properties públicas do elemento
greeting: {
type: String,
value: "Hello!"
}
}
});
</script>
</dom-module>
<link rel="import" href="another-element.html">
<dom-module id="element-name">
<template>
<style>
/* Estilos, variáveis e mixers CSS */
</style>
<!-- local DOM do seu elemento -->
<div>{{greeting}}</div> <!-- data bindings no DOM do elemento -->
</template>
<script>
// registro do elemento
Polymer({
is: "element-name",
// Propriedades e métodos do prototype do seu elemento
properties: {
// properties públicas do elemento
greeting: {
type: String,
value: "Hello!"
}
}
});
</script>
</dom-module>
<link rel="import" href="another-element.html">
<dom-module id="element-name">
<template>
<style>
/* Estilos, variáveis e mixers CSS */
</style>
<!-- local DOM do seu elemento -->
<div>{{greeting}}</div> <!-- data bindings no DOM do elemento -->
</template>
<script>
// registro do elemento
Polymer({
is: "element-name",
// Propriedades e métodos do prototype do seu elemento
properties: {
// properties públicas do elemento
greeting: {
type: String,
value: "Hello!"
}
}
});
</script>
</dom-module>
<element-name
id=”element”
greeting=”Hi DevFestNE”>
</element-name>
Hi DevFestNE
<link rel="import" href="element-name.html">
this.$.element.greeting=”Hi Again”;
Hi Again
<style>
#element {
--background-color: #38761D;
}
</style>
this.$.element.setGreeting(”Hi Again”);
<template is="dom-repeat" items="{{items}}">
<div>#{{index}} - {{item}}</div>
</template>
Todas features, nenhum framework!
<template is="dom-if" if="{{enabled}}">
<div>I’m enabled!</div>
</template>
Plataforma Web
Web Components feitos com Polymer (ou não)
Frameworks JS
Aplicação
+4 MILHÕES DE
WEB PAGES
+ 500 projetos
6.000 elementos
O maior portal de entretenimento do MUNDO!
Web components: mais simples e produtivo com polymer!
Uma coleção de elementos
criados pela equipe do Google
Layout responsivo para estruturar a sua aplicação
Layout responsivo para estruturar a sua aplicação
https://ebidel.github.io/material-playground/
Toda a complexidade das APIs em simples elementos
Progressive Web Apps
Offline First
<platinum-sw-register auto-register>
<platinum-sw-cache></platinum-sw-cache>
</platinum-sw-register>
2525
repositórios
1006
autores
Web components: mais simples e produtivo com polymer!
<script src=”webcomponents-lite.js”>
</script>
Polyfills - 40kb
Chrome
76.19%
FireFox
10.59%
Safari
8.12%
IE/Edge
4.72%
Total
99.98%
Opera
0.32%
Outros
0.04%
#DevFestNE - talentos@movile.com
andrewillard@gmail.com
andrewillard
andrewillard
andrewillard

Mais conteúdo relacionado

PPTX
PPT
Prototype Framework Javascript
ODP
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
PPT
PDF
Componentes para a Web
PDF
Html5 workshop
PDF
Programando para programadores: Desafios na evolução de um Framework
PDF
Aplicacoes Rapidas Para Web Com Django
Prototype Framework Javascript
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Componentes para a Web
Html5 workshop
Programando para programadores: Desafios na evolução de um Framework
Aplicacoes Rapidas Para Web Com Django

Semelhante a Web components: mais simples e produtivo com polymer! (20)

PDF
O que todos os developers devem saber sobre seo
ODP
Otimize sua web page e web components
PDF
Curso de Java (Parte 6) Introdução a Front-end
KEY
Python 08
PPTX
Aula html5
PDF
Desenvolvendo aplicacoes mobile_com_html_css_
PDF
Aplicações rápidas para a Web com Django
PPTX
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
PDF
Quick Form DataBase (QFDB)
PPTX
MIRA - Um framework Javascript para construção de interfaces adaptativas em a...
PDF
Apache Wicket
PDF
Introdução a HTML, CSS, JS, Ajax
PDF
Html, css, js, ajax
PDF
Programação Web com jQuery
PDF
HTML + CSS
PDF
Wicket 2008
PDF
Javascript truquesmagicos
PPTX
HTML5, CSS3 e o futuro da web
PDF
PDF
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
O que todos os developers devem saber sobre seo
Otimize sua web page e web components
Curso de Java (Parte 6) Introdução a Front-end
Python 08
Aula html5
Desenvolvendo aplicacoes mobile_com_html_css_
Aplicações rápidas para a Web com Django
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Quick Form DataBase (QFDB)
MIRA - Um framework Javascript para construção de interfaces adaptativas em a...
Apache Wicket
Introdução a HTML, CSS, JS, Ajax
Html, css, js, ajax
Programação Web com jQuery
HTML + CSS
Wicket 2008
Javascript truquesmagicos
HTML5, CSS3 e o futuro da web
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Anúncio

Último (19)

PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Apple Pippin Uma breve introdução. - David Glotz
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula 18 - Manipulacao De Arquivos python
Aula04-Academia Heri- Tecnologia Geral 2025
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Anúncio

Web components: mais simples e produtivo com polymer!