SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
<web
components>
um futuro
chamado
@zenorocha
@liferay @alloyui
jqueryboilerplate.com
browserdiet.com
os projetos
mais populares
voltados para
client-side
estão fadados
a morrer
vs
<canvas>
document.querySelector
vs
vs
<input type=”date”>
então quer dizer
que tudo vai virar
“nativo” um dia?
o que as
principais
empresas da
web estão
trabalhando hoje?
getbootstrap.com
facebook.github.io/react
topcoat.io
alloyui.com
purecss.io
como usar um
“componente” hoje?
1. Nunca crie! Use um plugin jQuery
2. Copie e cole o código de alguém
3. Torça pra que funcione
Web Components
<braziljs>
braziljs.github.io/braziljs-element
<video is=”camera”>
customelements.github.io/camera-element
Web Components
Custom
Elements
Import
Templates
Shadow DOM
Decorators*
Custom
Elements
<element name="braziljs" constructor="BrazilJS"
attributes="onde">
// implementação
</element>
<element>
<element name="camera" extends="video">
// implementação
</element>
<element>
zno.io/QxNJ
<brazil-js></brazil-js>
usando JS
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() {
	 this.textContent = 'BrazilJS!';
};
document.register('brazil-js', {
	 prototype: proto
});
lifecycle
•createdCallback
•enteredDocumentCallback
•leftDocumentCallback
•attributeChangedCallback
x-tags.org
polymer-project.org
<polymer-element name="braziljs" attributes="onde">
	<script>
	 	 Polymer('braziljs', {
	 	 	 onde: 'Porto Alegre',
	 	 	 created: function() {
	 	 	 	 // faça algo
	 	 	 }
	 	 });
	 </script>
</polymer-element>
como usar?
zno.io/QxlZ
Templates
Templates
são blocos
reutilizáveis
de código
server-side
mustache
handlebars
liquid
jinja
velocity
savant
client-side
mustache
handlebars
eco
ejs
jade
hogan
gambiarra #1
<div id="template" style="display: none">
<img src="logo.png" class="logo.png">
</div>
<script id="template" type="text/x-handlebars-template">
<img src="logo.png">
</script>
gambiarra #2
<template>
<template id="meuTemplate">
<img src="">
</template>
como criar?
// 1. Acessa o conteúdo do template
var t = document.querySelector('#meuTemplate').content;
// 2. Manipula elemento interno do template
t.querySelector('img').src = 'logo.png';
// 3. Clona e insere no DOM
document.body.appendChild(t.cloneNode(true));
como usar?
Shadow
DOM
Shadow DOM
esconde os
detalhes de
implementação
mas e o
<iframe>?
do que é feito
um <video>?
ou um password, textarea, date?
como usar?
<h1>Documento</h1>
<div id=”cuia”></div>
var cuia = document.querySelector('#cuia')
.createShadowRoot();
cuia.innerHTML = '<h1>Mate</h1>';
estilo, marcação e
script encapsulados
<h1>Documento</h1>
<div id=”cuia”></div>
var cuia = document.querySelector('#cuia')
.createShadowRoot();
cuia.innerHTML = '<h1>Mate</h1>' +
	 	 	 	 	 '<style>h1 { color: #f00; }</style>';
como ativar?
Import
como usar?
<link rel="import" href="braziljs.html">
jonrimmer.github.io/are-we-componentized-yet
Flags
quero usar hoje,
onde eu encontro?
NPM? Bower?
@eduardolundgren
@bernarddeluna
customelements.io
<twitter>
customelements.github.io/twitter-element
<gmaps>
customelements.github.io/gmaps-element
<video is=”camera”>
customelements.github.io/camera-element
<video is=”tracking”>
eduardolundgren.github.io/tracking-element
ou seja...
encapsulamento e
reaproveitamento de
código de verdade
A melhor forma de
prever o futuro é
inventando ele
e..... camisetas!
Um futuro chamado Web Components

Contenu connexe

Tendances

Destruindo com AJAX: evitando o apocalipse - riojs
Destruindo com AJAX: evitando o apocalipse - riojsDestruindo com AJAX: evitando o apocalipse - riojs
Destruindo com AJAX: evitando o apocalipse - riojs
Hugo Roque
 

Tendances (20)

Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
Directive com AngularJS - Datepicker
Directive com AngularJS - DatepickerDirective com AngularJS - Datepicker
Directive com AngularJS - Datepicker
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 
VueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteVueJS - Uma alternativa elegante
VueJS - Uma alternativa elegante
 
Android Libs - AndroidDevConf
Android Libs - AndroidDevConfAndroid Libs - AndroidDevConf
Android Libs - AndroidDevConf
 
O Mágico mundo de Web Components
O Mágico mundo de Web ComponentsO Mágico mundo de Web Components
O Mágico mundo de Web Components
 
Hacking Twitter API [ Giran Siege ]
Hacking Twitter API [ Giran Siege ]Hacking Twitter API [ Giran Siege ]
Hacking Twitter API [ Giran Siege ]
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Melhores Práticas Web Components
Melhores Práticas Web ComponentsMelhores Práticas Web Components
Melhores Práticas Web Components
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UI
 
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
JavaScript - #Aula03 parte 04 - Bichinho Virtual - Evento Onclick, Prompt, fu...
JavaScript - #Aula03 parte 04 - Bichinho Virtual - Evento Onclick, Prompt, fu...JavaScript - #Aula03 parte 04 - Bichinho Virtual - Evento Onclick, Prompt, fu...
JavaScript - #Aula03 parte 04 - Bichinho Virtual - Evento Onclick, Prompt, fu...
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-Frame
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Destruindo com AJAX: evitando o apocalipse - riojs
Destruindo com AJAX: evitando o apocalipse - riojsDestruindo com AJAX: evitando o apocalipse - riojs
Destruindo com AJAX: evitando o apocalipse - riojs
 

En vedette

Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
Giovanni Bassi
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!
Zeno Rocha
 
Curso SEO Avancado - Digitalks
Curso SEO Avancado - DigitalksCurso SEO Avancado - Digitalks
Curso SEO Avancado - Digitalks
Ricardo T. Dias
 

En vedette (20)

Desenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a ComponentesDesenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a Componentes
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript Funcional
 
SEO para font-end
SEO para font-endSEO para font-end
SEO para font-end
 
Zeno rocha - HTML5 APIs para Mobile
Zeno rocha - HTML5 APIs para MobileZeno rocha - HTML5 APIs para Mobile
Zeno rocha - HTML5 APIs para Mobile
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Sigle Page Application - A nova Web
Sigle Page Application - A nova WebSigle Page Application - A nova Web
Sigle Page Application - A nova Web
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Iniciando com Yeoman, Grunt e Bower
Iniciando com Yeoman, Grunt e BowerIniciando com Yeoman, Grunt e Bower
Iniciando com Yeoman, Grunt e Bower
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!
 
Curso SEO Avancado - Digitalks
Curso SEO Avancado - DigitalksCurso SEO Avancado - Digitalks
Curso SEO Avancado - Digitalks
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-end
 
Layouts Responsivos
Layouts ResponsivosLayouts Responsivos
Layouts Responsivos
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web Development
 

Similaire à Um futuro chamado Web Components

Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Leonardo Balter
 
HTML5- Road Show TI - Senac Jaboticabal
HTML5- Road Show TI -  Senac Jaboticabal HTML5- Road Show TI -  Senac Jaboticabal
HTML5- Road Show TI - Senac Jaboticabal
Clécio Bachini
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
Rodrigo Kono
 

Similaire à Um futuro chamado Web Components (20)

Web components
Web componentsWeb components
Web components
 
Web components
Web componentsWeb components
Web components
 
Componentes para a Web
Componentes para a WebComponentes para a Web
Componentes para a Web
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Otimize sua web page e web components
Otimize sua web page e web componentsOtimize sua web page e web components
Otimize sua web page e web components
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
HTML 5 e Open Web Platform
HTML 5 e Open Web PlatformHTML 5 e Open Web Platform
HTML 5 e Open Web Platform
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Road Show TI Senac São Paulo - Jaú
Road Show TI Senac São Paulo - JaúRoad Show TI Senac São Paulo - Jaú
Road Show TI Senac São Paulo - Jaú
 
HTML5 - A nova fronteira no desenvolvimento de aplicações WEB
HTML5 - A nova fronteira no desenvolvimento de aplicações WEBHTML5 - A nova fronteira no desenvolvimento de aplicações WEB
HTML5 - A nova fronteira no desenvolvimento de aplicações WEB
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Curso: Web Design Responsivo
Curso: Web Design ResponsivoCurso: Web Design Responsivo
Curso: Web Design Responsivo
 
HTML5- Road Show TI - Senac Jaboticabal
HTML5- Road Show TI -  Senac Jaboticabal HTML5- Road Show TI -  Senac Jaboticabal
HTML5- Road Show TI - Senac Jaboticabal
 
HTML 5
HTML 5HTML 5
HTML 5
 
Html5 ass
Html5 assHtml5 ass
Html5 ass
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
 
Phonegap
PhonegapPhonegap
Phonegap
 
jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com Javascript
 
O Papel do desenvolvedor Front End
O Papel do desenvolvedor Front EndO Papel do desenvolvedor Front End
O Papel do desenvolvedor Front End
 

Plus de Zeno Rocha

Liferay UI (R)evolution
Liferay UI (R)evolutionLiferay UI (R)evolution
Liferay UI (R)evolution
Zeno Rocha
 

Plus de Zeno Rocha (11)

Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existed
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + Wearables
 
Liferay UI (R)evolution
Liferay UI (R)evolutionLiferay UI (R)evolution
Liferay UI (R)evolution
 
Getting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIGetting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUI
 
How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java Portals
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScript
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados Abertos
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 Boilerplate
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5
 
HTML 5
HTML 5HTML 5
HTML 5
 
Wordpress
WordpressWordpress
Wordpress
 

Um futuro chamado Web Components