Vue.js

44
Vue.js componentes reativos para interfaces web modernas

Transcript of Vue.js

Page 1: Vue.js

Vue.jscomponentes reativos para interfaces web modernas

Page 2: Vue.js

Luís || Felipe || Souzaluisfmsouza.com.br || @luisfmsouz

Page 3: Vue.js

desenvolvedor front-end na

Page 4: Vue.js

Estamos contratando!

Page 5: Vue.js

1)Pronúncia

Page 6: Vue.js

Vue (pronounced /vjuː/, like view)

Page 7: Vue.js

"O vue.js é um angular

simplificado!"

Page 8: Vue.js
Page 9: Vue.js

2) O vue.js não é um angular simplificado!

Page 10: Vue.js

“Vue.js é para criar aplicações baseadas em componentes. Angular é para criar

aplicações que chamo de: baseadas em templates.”

http://bit.ly/2e9Cp0k

Luiz Vinicius, CodeCasts

Page 11: Vue.js

3) O que é esse tal de vue.js?

Page 12: Vue.js

Vue.jsCriado pelo Evan You (@youyuxi)

2014

Patreon $8,863

Apadrinhado pela comunidade Laravel

Usado em larga escala na China (Alibaba e Baidu)

Page 13: Vue.js

Reactive data binding

Sempre que você modificar os dados, o DOM será atualizado!

Como resultado, grande parte da nossa lógica estará em manipular diretamente os dados, em vez de bagunçar o DOM.

Page 14: Vue.js
Page 15: Vue.js
Page 16: Vue.js

DOM {}

Page 17: Vue.js

Composable components

Vue.js nos permite construir aplicações compostas de pequenos componentes, que são auto-suficientes, e muitas vezes reutilizáveis.

Page 18: Vue.js
Page 19: Vue.js

“Faltam mais detalhes aqui!”

Devs que não estão dormindo

Page 20: Vue.js

Hello world vue.js<div id="app"> <h3>Olá, {{ name }}</h3> <input type="text" v-model="name"></div>

<script> new Vue({ el: '#app', data: { name: 'Luís Felipe Souza', }, })</script>

http://bit.ly/2egsZA6

Page 21: Vue.js

Diretivas

Page 22: Vue.js

Diretivas<input type="text" v-model="name" />

<ul id="example-1">

<li v-for="item in items">

{{ item.message }}

</li>

</ul>

Page 23: Vue.js

Diretivas - parte 2

<button v-on:click="doThis"></button>

<h1 v-if="isActive">{{ title }}</h1>

<h1 v-show="isActive">{{ title }}</h1>

Page 24: Vue.js
Page 25: Vue.js

Vue.js<input v-model="name" />

<div v-show="hasError">

...

</div>

<h1>{{ msg |

uppercase }}</h1>

<input ng-model="name" />

<div ng-show="hasError">

...

</div>

<h1>{{ msg |

uppercase }}</h1>

Angular

Page 26: Vue.js

Opções deData e DOM

Page 27: Vue.js

Principais opçõesnew Vue({

});

el: "#element",

data: {},components: {},computed: {},methods: {}

template: "<div></div>",

Page 28: Vue.js

Data (propriedades reativas)

data: {

name: "Luís Felipe",

lastName: "Souza",

company: "Magnetis",

debt: 1100

}

Page 29: Vue.js

Components

components: {

'greeting': Greeting,

'money': Money

}

Page 30: Vue.js

Components em ação

// o componente...

<money :value="1100"></money>

// se transforma em...

<h3>1100</h3>

Page 31: Vue.js

Computed

computed: {

hasName: function() {

return !!this.name.length && !!

this.lastName.length;

}

}

Page 32: Vue.js

Computed serve para evitar

// como era…

<h1 v-if="!!this.name.length && !!this.lastName.length"> …

</h1>

// e como é…

<h1 v-if="hasName"> … </h1>

Page 33: Vue.js

Methods

methods: { fullName: function() { return this.name + ' ' + this.lastName; }}

Page 34: Vue.js

Methods em ação

// o método...

<greeting

fullName="this.fullName()"></greeting>

// retorna...

<h1>Luís Felipe Souza</h1>

Page 35: Vue.js

"It's all about simplicity!"

Page 36: Vue.js
Page 38: Vue.js

Bônus) Vue.js 2.0

Page 39: Vue.js

Virtual-DOM!

Page 40: Vue.js

BônusVue.js 2.0

●Virtual-DOM

●SSR - Server Side Rendering

●Template ou JSX

●16kb (min+gzip)

●Não quebrou a API

●Weex, o "Vue-Native"http://bit.ly/2etwPF8

Page 41: Vue.js
Page 42: Vue.js

Lembrem-se!

Pronúncia /vjuː/, like view

O vue.js não é um angular simplificado!

It's all about simplicity!Reactive data binding

Composable components

2.0 vem aí!

Page 43: Vue.js

Quero mais!

● http://www.vuejs-brasil.com.br/

● https://codecasts.com.br/

● https://github.com/vuejs/awesome-vue

Page 44: Vue.js

Obrigado!Merci!