Top Banner
<web components> um futuro chamado @zenorocha
83

Um futuro chamado Web Components

Jun 29, 2015

Download

Technology

Zeno Rocha

BrazilJS 2013
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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