Slide 1

Slide 1 text

um futuro chamado @zenorocha

Slide 2

Slide 2 text

@liferay @alloyui

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

jqueryboilerplate.com

Slide 7

Slide 7 text

browserdiet.com

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

os projetos mais populares voltados para client-side estão fadados a morrer

Slide 10

Slide 10 text

vs

Slide 11

Slide 11 text

document.querySelector vs

Slide 12

Slide 12 text

vs

Slide 13

Slide 13 text

então quer dizer que tudo vai virar “nativo” um dia?

Slide 14

Slide 14 text

o que as principais empresas da web estão trabalhando hoje?

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

getbootstrap.com

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

facebook.github.io/react

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

topcoat.io

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

alloyui.com

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

purecss.io

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

como usar um “componente” hoje?

Slide 29

Slide 29 text

1. Nunca crie! Use um plugin jQuery

Slide 30

Slide 30 text

2. Copie e cole o código de alguém

Slide 31

Slide 31 text

3. Torça pra que funcione

Slide 32

Slide 32 text

Web Components

Slide 33

Slide 33 text

braziljs.github.io/braziljs-element

Slide 34

Slide 34 text

customelements.github.io/camera-element

Slide 35

Slide 35 text

Web Components Custom Elements Import Templates Shadow DOM Decorators*

Slide 36

Slide 36 text

Custom Elements

Slide 37

Slide 37 text

// implementação

Slide 38

Slide 38 text

// implementação

Slide 39

Slide 39 text

zno.io/QxNJ

Slide 40

Slide 40 text

usando JS var proto = Object.create(HTMLElement.prototype); proto.createdCallback = function() { this.textContent = 'BrazilJS!'; }; document.register('brazil-js', { prototype: proto });

Slide 41

Slide 41 text

lifecycle •createdCallback •enteredDocumentCallback •leftDocumentCallback •attributeChangedCallback

Slide 42

Slide 42 text

x-tags.org

Slide 43

Slide 43 text

polymer-project.org

Slide 44

Slide 44 text

Polymer('braziljs', { onde: 'Porto Alegre', created: function() { // faça algo } }); como usar?

Slide 45

Slide 45 text

zno.io/QxlZ

Slide 46

Slide 46 text

Templates

Slide 47

Slide 47 text

Templates são blocos reutilizáveis de código

Slide 48

Slide 48 text

server-side mustache handlebars liquid jinja velocity savant

Slide 49

Slide 49 text

client-side mustache handlebars eco ejs jade hogan

Slide 50

Slide 50 text

gambiarra #1

Slide 51

Slide 51 text

<img src="logo.png"> gambiarra #2

Slide 52

Slide 52 text

Slide 53

Slide 53 text

como criar?

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Shadow DOM

Slide 56

Slide 56 text

Shadow DOM esconde os detalhes de implementação

Slide 57

Slide 57 text

mas e o ?

Slide 58

Slide 58 text

do que é feito um ? ou um password, textarea, date?

Slide 59

Slide 59 text

como usar?

Documento

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

Mate

';

Slide 60

Slide 60 text

estilo, marcação e script encapsulados

Documento

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

Mate

' + 'h1 { color: #f00; }';

Slide 61

Slide 61 text

como ativar?

Slide 62

Slide 62 text

Import

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

como usar?

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

jonrimmer.github.io/are-we-componentized-yet

Slide 70

Slide 70 text

Flags

Slide 71

Slide 71 text

quero usar hoje, onde eu encontro? NPM? Bower?

Slide 72

Slide 72 text

@eduardolundgren

Slide 73

Slide 73 text

@bernarddeluna

Slide 74

Slide 74 text

customelements.io

Slide 75

Slide 75 text

customelements.github.io/twitter-element

Slide 76

Slide 76 text

customelements.github.io/gmaps-element

Slide 77

Slide 77 text

customelements.github.io/camera-element

Slide 78

Slide 78 text

eduardolundgren.github.io/tracking-element

Slide 79

Slide 79 text

ou seja...

Slide 80

Slide 80 text

encapsulamento e reaproveitamento de código de verdade

Slide 81

Slide 81 text

A melhor forma de prever o futuro é inventando ele

Slide 82

Slide 82 text

e..... camisetas!

Slide 83

Slide 83 text

No content