Um futuro chamado Web Components

83
<web components> um futuro chamado @zenorocha

description

BrazilJS 2013

Transcript of Um futuro chamado Web Components

Page 1: Um futuro chamado Web Components

<web components>

um futurochamado

@zenorocha

Page 3: Um futuro chamado Web Components
Page 4: Um futuro chamado Web Components
Page 5: Um futuro chamado Web Components
Page 8: Um futuro chamado Web Components
Page 9: Um futuro chamado Web Components

os projetosmais popularesvoltados paraclient-sideestão fadadosa morrer

Page 10: Um futuro chamado Web Components

vs

<canvas>

Page 11: Um futuro chamado Web Components

document.querySelector

vs

Page 12: Um futuro chamado Web Components

vs

<input type=”date”>

Page 13: Um futuro chamado Web Components

então quer dizerque tudo vai virar

“nativo” um dia?

Page 14: Um futuro chamado Web Components

o que asprincipais

empresas daweb estão

trabalhando hoje?

Page 15: Um futuro chamado Web Components
Page 17: Um futuro chamado Web Components
Page 19: Um futuro chamado Web Components
Page 21: Um futuro chamado Web Components
Page 23: Um futuro chamado Web Components
Page 25: Um futuro chamado Web Components
Page 26: Um futuro chamado Web Components
Page 27: Um futuro chamado Web Components
Page 28: Um futuro chamado Web Components

como usar um“componente” hoje?

Page 32: Um futuro chamado Web Components

Web Components

Page 34: Um futuro chamado Web Components

<video is=”camera”>

customelements.github.io/camera-element

Page 35: Um futuro chamado Web Components

Web ComponentsCustom

ElementsImport

TemplatesShadow DOM

Decorators*

Page 36: Um futuro chamado Web Components

CustomElements

Page 37: Um futuro chamado Web Components

<element name="braziljs" constructor="BrazilJS" attributes="onde"> // implementação </element>

<element>

Page 38: Um futuro chamado Web Components

<element name="camera" extends="video"> // implementação </element>

<element>

Page 40: Um futuro chamado Web Components

<brazil-js></brazil-js>

usando JS

var proto = Object.create(HTMLElement.prototype);

proto.createdCallback = function() { this.textContent = 'BrazilJS!'; };

document.register('brazil-js', { prototype: proto });

Page 41: Um futuro chamado Web Components

lifecycle•createdCallback

•enteredDocumentCallback

•leftDocumentCallback

•attributeChangedCallback

Page 44: Um futuro chamado Web Components

<polymer-element name="braziljs" attributes="onde"> <script> Polymer('braziljs', { onde: 'Porto Alegre', created: function() { // faça algo } }); </script> </polymer-element>

como usar?

Page 46: Um futuro chamado Web Components

Templates

Page 47: Um futuro chamado Web Components

Templatessão blocos

reutilizáveisde código

Page 48: Um futuro chamado Web Components

server-side

mustache

handlebars

liquid

jinja

velocity

savant

Page 49: Um futuro chamado Web Components

client-side

mustache

handlebars

eco

ejs jade

hogan

Page 50: Um futuro chamado Web Components

gambiarra #1 <div id="template" style="display: none"> <img src="logo.png" class="logo.png"> </div>

Page 51: Um futuro chamado Web Components

<script id="template" type="text/x-handlebars-template"> <img src="logo.png"> </script>

gambiarra #2

Page 52: Um futuro chamado Web Components

<template>

Page 53: Um futuro chamado Web Components

<template id="meuTemplate"> <img src=""></template>

como criar?

Page 54: Um futuro chamado Web Components

// 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?

Page 55: Um futuro chamado Web Components

ShadowDOM

Page 56: Um futuro chamado Web Components

Shadow DOM esconde os

detalhes de implementação

Page 57: Um futuro chamado Web Components

mas e o<iframe>?

Page 58: Um futuro chamado Web Components

do que é feitoum <video>?

ou um password, textarea, date?

Page 59: Um futuro chamado Web Components

como usar? <h1>Documento</h1> <div id=”cuia”></div>

var cuia = document.querySelector('#cuia') .createShadowRoot();

cuia.innerHTML = '<h1>Mate</h1>';

Page 60: Um futuro chamado Web Components

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>';

Page 61: Um futuro chamado Web Components

como ativar?

Page 62: Um futuro chamado Web Components

Import

Page 63: Um futuro chamado Web Components
Page 64: Um futuro chamado Web Components
Page 65: Um futuro chamado Web Components
Page 66: Um futuro chamado Web Components
Page 67: Um futuro chamado Web Components

como usar? <link rel="import" href="braziljs.html">

Page 68: Um futuro chamado Web Components
Page 70: Um futuro chamado Web Components

Flags

Page 71: Um futuro chamado Web Components

quero usar hoje,onde eu encontro?

NPM? Bower?

Page 77: Um futuro chamado Web Components

<video is=”camera”>

customelements.github.io/camera-element

Page 78: Um futuro chamado Web Components

<video is=”tracking”>

eduardolundgren.github.io/tracking-element

Page 79: Um futuro chamado Web Components

ou seja...

Page 80: Um futuro chamado Web Components

encapsulamento e reaproveitamento de

código de verdade

Page 81: Um futuro chamado Web Components

A melhor forma deprever o futuro é

inventando ele

Page 83: Um futuro chamado Web Components