SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Gabriel Colombo
Hello.vue
Introdução ao framework que vai mudar a sua vida
Hello.vue Sobre mim
Gabriel Colombo
23 anos — 11 anos de música
Designer & Front-end Dev
Tecnólogo em Sistemas para Internet,
Intercambista em Web & Multimídia
3 anos de experiência
2 anos utilizando Vue.js diariamente
Escrevo pro Medium, Prototypr.IO e Marvel blog
Twitter @gcolombo_ — LinkedIn gabrielcolombo
Hello.vue Conteúdo do workshop
1 Os motivos de
estarmos aqui 2 A mágica por trás
do framework 3 Projetão
interessante
» Reatividade
» A Vue instance
» Data-binding
» Diretivas
» Event Handling
» Lidando com I/O
» Componentes
» Introdução ao Vue.js
» Por que utilizá-lo
» Comparativo com
outros frameworks
» E-mail client
Vue.js
The Progressive
Javascript Framework
Hello.vue O que é, de onde veio, o que come?
Como seria se eu conseguisse extrair
as partes que gosto do Angular.js e
criar um framework menos
burocrático?
“
Evan You — Criador do Vue.js
Hello.vue Situação atual do framework
89%
Dos desenvolvedores estão
satisfeitos com o framework
80
Estrelas acumuladas
diariamente no GitHub
14º
Projeto mais favoritado de
todos os tempos no GitHub
Hello.vue Situação atual do framework
Hello.vue Versões
1 Versão 0.11+
(V-angular) 2 Versão 1.0+
(Stable) 3 Versão 2.0+
» Mixins
» Class bindings
» Plugins
» Aprofundamento na
documentação
» Introdução dos
conceitos base:
(Models, directives,
computed properties,
watchers, components,
etc).
» Novos hooks na Vue
Instance
» Server-side rendering
» Vuex oficializado
» Suporte à Typescript
» Testes unitários
» Melhorias nas
funcionalidades
Hello.vue Por que usar Vue?
1 Produtividade
2 Fácil aprendizado
3 Evolução
constante
4 Fácil integração com
outras bibliotecas 5 Comunidade
proativa 6 Alta
performance
Hello.vue Quem está usando?
Hello.vue Ex #1 — Hello World
Hello World
“Recordar é viver”
¯_(ツ)_/¯
Hello.vue Ex #1 — Alguém tá lendo isso aqui?
HTML JS
<div id=”app”>
<h1>
{{ greeting }}
</h1>
</div>
new Vue({
el: ‘#app’,
data: {
greeting: ‘Hello World!’
}
});
Veja o resultado ⤵
https://goo.gl/m92TKR
Hello.vue A Vue Instance
O que é
» Objeto contendo vários métodos que
é atrelado à um elemento no DOM ao
ser inicializado
» Recebe como parâmetro um objeto
de configuração com algumas
propriedades
Opções de Configuração
» el
» data
» methods
» watch
» computed
» mixins
» components
» beforeCreate
» created
» beforeMount
» mounted
» beforeUpdate
» updated
» beforeDestroy
» destroyed
Base Hooks
Mais detalhes ⤵
https://goo.gl/VsxBWt
Hello.vue Directives — v-for
A diretiva v-for pode ser utilizada
para renderizar uma lista baseada
nos itens de um array.
Exemplo
» Renderizar rows de uma tabela
com dados vindo de uma api.
HTML
<tr v-for=”user in users”>
<td>{{ user.name }}</td>
<td>{{ user.email }}</td>
</tr>
Veja o resultado ⤵
https://goo.gl/qfAuBZ
JSON
[
{name: ‘..’, email: ‘..’},
{name: ‘..’, email: ‘..’}
]
Hello.vue Directives — v-if / v-else / v-else-if
As diretivas v-if / v-else / v-else-if
podem ser utilizadas para renderizar
condicionalmente um elemento na
tela.
Exemplo
» Esconder campos de um form,
linhas de uma tabela, entre outros.
HTML
<div v-if=”users.length > 0”>
Resultados
</div>
<div v-else>Sem resultados</div>
Veja o resultado ⤵
https://goo.gl/1K1aEG
JS
{
users: []
}
Hello.vue Directives — v-show
As diretiva v-show é utilizada para
esconder elementos na tela
(visualmente).
Exemplo
» Esconder botões e somente
mostrar em certas ocasiões.
HTML
<button
v-show=”orders.length > 0”
>
Confirmar pedido
</button>
Veja o resultado ⤵
https://goo.gl/27lkKN
JS
{
orders: []
}
Hello.vue Directives — v-bind (:)
A diretiva v-bind é utilizada para
linkar propriedades à atributos
através de um array ou objeto.
Exemplo
» Alternar classes de validação em
um formulário baseado em uma
computed property.
JS
data: {
inputStates: {
active: true,
'text-danger': false
}
}
Veja o resultado ⤵
https://goo.gl/L1cnVF
HTML
<input :class="inputStates">
Hello.vue Directives — v-on(@)
A diretiva v-on é utilizada para
atribuir um event handler à um
elemento..
Exemplo
» Cliques, eventos de teclado,
eventos em inputs, entre outros.
JS
methods: {
confirmDeletion() {
confirm('Deseja excluir?');
}
}
Veja o resultado ⤵
https://goo.gl/kMT7sc
HTML
<button @click=”confirmDeletion()>
Excluir
</button>
Hello.vue Methods
Methods é um objeto que contém
todas as funções disponíveis para a
instância.
Tais funções podem ser acessadas
pelo html através das {{ chaves }}, ou
dentro da instância usando this ou a
variável que contém a instância,
dependendo do scope atual
JS
Methods: {
getUserInfo(user) {
return user.name;
}
}
Veja o resultado ⤵
https://goo.gl/EcelE4
HTML
<div>{{ getUserName(user) }}</div>
Hello.vue Watchers
Watchers são usados para realizar
tarefas complexas quando uma
propriedade é atualizada.
Exemplo
» Buscar informações em uma api,
disparar funções associadas à
outros models, entre outros.
HTML
watch: {
paymentComplete(status) {
if(status === true) {
this.requestEvaluation();
}
}
}
Veja o resultado ⤵
https://goo.gl/AI3X2d
Hello.vue Computed Properties
Propriedades computadas são
geralmente utilizadas para evitar
excesso de lógica nas views.
Exemplo
» Criação de conteúdo dinâmico,
como URLs, valores, entre outros.
JS
{
computed: {
buzzLightyear: function() {
return ‘Ao infinito, e além!’
}
}
Veja o resultado ⤵
https://goo.gl/4Shqeg
HTML
<h1>{{ buzzLightyear }}</h1>
Hello.vue Filters
O intuito principal dos filtros é
manipulação de texto. Podem ser
encadeados e receber parâmetros.
Exemplo
» Transformar a primeira letra de
uma palavra em maiúscula.
JS
filters: {
capitalize: function (value) {
return value
.toString()
.charAt(0)
.toUpperCase()
+ value.slice(1);
}
}
Veja o resultado ⤵
https://goo.gl/kUlL6e
HTML
<div>{{ message | capitalize }}</div>
Hello.vue Ex #2 — Calculadora de Impostos
07:36
De: Gerente (mandachuva@empresa.com)
Para: Dev (novodev@empresa.com)
Assunto: Precisamos conversar.
Caro desenvolvedor,
Nosso último dev foi demitido por
justa causa devido ao compartilhamento
interno de memes do bolsonaro.
Porém o governo aumentou os impostos
da galera e ele era o encarregado de
atualizar os cálculos do sistema.
Preciso que isso seja atualizado e
liberado ao público.
De: Gerente (mandachuva@empresa.com)
Para: Dev (novodev@empresa.com)
Assunto: Só mais um detalhe.
PS: Você tem 30 minutos.
Att,
Gerente.
̿̿ ̿̿ ̿̿ ̿'̿'̵͇̿̿з=( ▀ ͜͞ʖ▀)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿
07:37
Veja o resultado ⤵
https://goo.gl/ivKou8
Hello.vue Ex #2 — Calculadora de Impostos
Sem Vue.js Com Vue.js
Hello.vue Custom Directives
Além das diretivas padrões, é
possível criar diretivas customizadas,
tanto globais como específicas à um
componente.
Exemplo
» Criar uma diretiva que coloca um
input em foco automaticamente.
JS
Vue.directive('focus', {
inserted: function (el) {
el.focus();
}
});
Veja o resultado ⤵
https://goo.gl/HVswkw
HTML
<input v-focus>
Hello.vue Mixins
Mixins é a maneira na qual podemos
trabalhar com injeção de
dependência.
Só criar um objeto normal, com as
mesmas opções da Vue Instance, e
colocar o nome da variável no array
de mixins.
utils.js
var utils = {
data: { … },
methods: { … }
}
Veja o resultado ⤵
https://goo.gl/lx08Nj
main.js
New Vue({
…
mixins: [utils],
…
});
Hello.vue Components
Componentes são estruturas que
permitem criar elementos
customizados para encapsular
código reutilizável.
Componentes podem contém
subcomponentes, e serem
declarados de maneira global ou
local à uma instância.
JS
Vue.component('title', {
props: ['message']
template: '<h1>{{message}}</h1>'
});
Veja o resultado ⤵
https://goo.gl/rkQXGx
HTML
<title message="Bem-vindo(a)!">
Hello.vue Projeto — MailBox 2k
MailBox 2k
“O melhor e-mail client dos anos 2000”
Hello.vue Q&A
Perguntas?
(~_^)?
Hello.vue Foi bom enquanto durou :D
Obrigado!
Hello.vue Foi bom enquanto durou :D

Mais conteúdo relacionado

Mais procurados

11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventosCentro Paula Souza
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereJuliano Martins
 
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-FrameJorge Cardoso
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
Ganhando tempo com Task Runners
Ganhando tempo com Task RunnersGanhando tempo com Task Runners
Ganhando tempo com Task RunnersFabio Carvalho
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Javascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksJavascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksBruno Abrantes
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBLuciano Borges
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQueryPaulo Pires
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQueryTiago Butzke
 

Mais procurados (20)

11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
 
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
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectados
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Ganhando tempo com Task Runners
Ganhando tempo com Task RunnersGanhando tempo com Task Runners
Ganhando tempo com Task Runners
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Javascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksJavascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworks
 
Spa com angular js flisol 2015 - aquidauana ms
Spa com angular js   flisol 2015 - aquidauana msSpa com angular js   flisol 2015 - aquidauana ms
Spa com angular js flisol 2015 - aquidauana ms
 
JQuery
JQuery JQuery
JQuery
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEB
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQuery
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQuery
 

Semelhante a Hello vue

LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfverickrodrigo23
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Marcelo Rodrigues
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseLuiz Duarte
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Iniciando com Jquery
Iniciando com JqueryIniciando com Jquery
Iniciando com JqueryDanilo Sousa
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.jsAlberto Souza
 

Semelhante a Hello vue (20)

LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
 
Asp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 PtAsp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 Pt
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 
Google apps script - Parte 2
Google apps script - Parte 2Google apps script - Parte 2
Google apps script - Parte 2
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Introdução Vue JS
Introdução Vue JSIntrodução Vue JS
Introdução Vue JS
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Iniciando com Jquery
Iniciando com JqueryIniciando com Jquery
Iniciando com Jquery
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 

Hello vue

  • 1. Gabriel Colombo Hello.vue Introdução ao framework que vai mudar a sua vida
  • 2. Hello.vue Sobre mim Gabriel Colombo 23 anos — 11 anos de música Designer & Front-end Dev Tecnólogo em Sistemas para Internet, Intercambista em Web & Multimídia 3 anos de experiência 2 anos utilizando Vue.js diariamente Escrevo pro Medium, Prototypr.IO e Marvel blog Twitter @gcolombo_ — LinkedIn gabrielcolombo
  • 3. Hello.vue Conteúdo do workshop 1 Os motivos de estarmos aqui 2 A mágica por trás do framework 3 Projetão interessante » Reatividade » A Vue instance » Data-binding » Diretivas » Event Handling » Lidando com I/O » Componentes » Introdução ao Vue.js » Por que utilizá-lo » Comparativo com outros frameworks » E-mail client
  • 5. Hello.vue O que é, de onde veio, o que come? Como seria se eu conseguisse extrair as partes que gosto do Angular.js e criar um framework menos burocrático? “ Evan You — Criador do Vue.js
  • 6. Hello.vue Situação atual do framework 89% Dos desenvolvedores estão satisfeitos com o framework 80 Estrelas acumuladas diariamente no GitHub 14º Projeto mais favoritado de todos os tempos no GitHub
  • 8. Hello.vue Versões 1 Versão 0.11+ (V-angular) 2 Versão 1.0+ (Stable) 3 Versão 2.0+ » Mixins » Class bindings » Plugins » Aprofundamento na documentação » Introdução dos conceitos base: (Models, directives, computed properties, watchers, components, etc). » Novos hooks na Vue Instance » Server-side rendering » Vuex oficializado » Suporte à Typescript » Testes unitários » Melhorias nas funcionalidades
  • 9. Hello.vue Por que usar Vue? 1 Produtividade 2 Fácil aprendizado 3 Evolução constante 4 Fácil integração com outras bibliotecas 5 Comunidade proativa 6 Alta performance
  • 11. Hello.vue Ex #1 — Hello World Hello World “Recordar é viver” ¯_(ツ)_/¯
  • 12. Hello.vue Ex #1 — Alguém tá lendo isso aqui? HTML JS <div id=”app”> <h1> {{ greeting }} </h1> </div> new Vue({ el: ‘#app’, data: { greeting: ‘Hello World!’ } }); Veja o resultado ⤵ https://goo.gl/m92TKR
  • 13. Hello.vue A Vue Instance O que é » Objeto contendo vários métodos que é atrelado à um elemento no DOM ao ser inicializado » Recebe como parâmetro um objeto de configuração com algumas propriedades Opções de Configuração » el » data » methods » watch » computed » mixins » components » beforeCreate » created » beforeMount » mounted » beforeUpdate » updated » beforeDestroy » destroyed Base Hooks Mais detalhes ⤵ https://goo.gl/VsxBWt
  • 14. Hello.vue Directives — v-for A diretiva v-for pode ser utilizada para renderizar uma lista baseada nos itens de um array. Exemplo » Renderizar rows de uma tabela com dados vindo de uma api. HTML <tr v-for=”user in users”> <td>{{ user.name }}</td> <td>{{ user.email }}</td> </tr> Veja o resultado ⤵ https://goo.gl/qfAuBZ JSON [ {name: ‘..’, email: ‘..’}, {name: ‘..’, email: ‘..’} ]
  • 15. Hello.vue Directives — v-if / v-else / v-else-if As diretivas v-if / v-else / v-else-if podem ser utilizadas para renderizar condicionalmente um elemento na tela. Exemplo » Esconder campos de um form, linhas de uma tabela, entre outros. HTML <div v-if=”users.length > 0”> Resultados </div> <div v-else>Sem resultados</div> Veja o resultado ⤵ https://goo.gl/1K1aEG JS { users: [] }
  • 16. Hello.vue Directives — v-show As diretiva v-show é utilizada para esconder elementos na tela (visualmente). Exemplo » Esconder botões e somente mostrar em certas ocasiões. HTML <button v-show=”orders.length > 0” > Confirmar pedido </button> Veja o resultado ⤵ https://goo.gl/27lkKN JS { orders: [] }
  • 17. Hello.vue Directives — v-bind (:) A diretiva v-bind é utilizada para linkar propriedades à atributos através de um array ou objeto. Exemplo » Alternar classes de validação em um formulário baseado em uma computed property. JS data: { inputStates: { active: true, 'text-danger': false } } Veja o resultado ⤵ https://goo.gl/L1cnVF HTML <input :class="inputStates">
  • 18. Hello.vue Directives — v-on(@) A diretiva v-on é utilizada para atribuir um event handler à um elemento.. Exemplo » Cliques, eventos de teclado, eventos em inputs, entre outros. JS methods: { confirmDeletion() { confirm('Deseja excluir?'); } } Veja o resultado ⤵ https://goo.gl/kMT7sc HTML <button @click=”confirmDeletion()> Excluir </button>
  • 19. Hello.vue Methods Methods é um objeto que contém todas as funções disponíveis para a instância. Tais funções podem ser acessadas pelo html através das {{ chaves }}, ou dentro da instância usando this ou a variável que contém a instância, dependendo do scope atual JS Methods: { getUserInfo(user) { return user.name; } } Veja o resultado ⤵ https://goo.gl/EcelE4 HTML <div>{{ getUserName(user) }}</div>
  • 20. Hello.vue Watchers Watchers são usados para realizar tarefas complexas quando uma propriedade é atualizada. Exemplo » Buscar informações em uma api, disparar funções associadas à outros models, entre outros. HTML watch: { paymentComplete(status) { if(status === true) { this.requestEvaluation(); } } } Veja o resultado ⤵ https://goo.gl/AI3X2d
  • 21. Hello.vue Computed Properties Propriedades computadas são geralmente utilizadas para evitar excesso de lógica nas views. Exemplo » Criação de conteúdo dinâmico, como URLs, valores, entre outros. JS { computed: { buzzLightyear: function() { return ‘Ao infinito, e além!’ } } Veja o resultado ⤵ https://goo.gl/4Shqeg HTML <h1>{{ buzzLightyear }}</h1>
  • 22. Hello.vue Filters O intuito principal dos filtros é manipulação de texto. Podem ser encadeados e receber parâmetros. Exemplo » Transformar a primeira letra de uma palavra em maiúscula. JS filters: { capitalize: function (value) { return value .toString() .charAt(0) .toUpperCase() + value.slice(1); } } Veja o resultado ⤵ https://goo.gl/kUlL6e HTML <div>{{ message | capitalize }}</div>
  • 23. Hello.vue Ex #2 — Calculadora de Impostos 07:36 De: Gerente (mandachuva@empresa.com) Para: Dev (novodev@empresa.com) Assunto: Precisamos conversar. Caro desenvolvedor, Nosso último dev foi demitido por justa causa devido ao compartilhamento interno de memes do bolsonaro. Porém o governo aumentou os impostos da galera e ele era o encarregado de atualizar os cálculos do sistema. Preciso que isso seja atualizado e liberado ao público. De: Gerente (mandachuva@empresa.com) Para: Dev (novodev@empresa.com) Assunto: Só mais um detalhe. PS: Você tem 30 minutos. Att, Gerente. ̿̿ ̿̿ ̿̿ ̿'̿'̵͇̿̿з=( ▀ ͜͞ʖ▀)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿ 07:37 Veja o resultado ⤵ https://goo.gl/ivKou8
  • 24. Hello.vue Ex #2 — Calculadora de Impostos Sem Vue.js Com Vue.js
  • 25. Hello.vue Custom Directives Além das diretivas padrões, é possível criar diretivas customizadas, tanto globais como específicas à um componente. Exemplo » Criar uma diretiva que coloca um input em foco automaticamente. JS Vue.directive('focus', { inserted: function (el) { el.focus(); } }); Veja o resultado ⤵ https://goo.gl/HVswkw HTML <input v-focus>
  • 26. Hello.vue Mixins Mixins é a maneira na qual podemos trabalhar com injeção de dependência. Só criar um objeto normal, com as mesmas opções da Vue Instance, e colocar o nome da variável no array de mixins. utils.js var utils = { data: { … }, methods: { … } } Veja o resultado ⤵ https://goo.gl/lx08Nj main.js New Vue({ … mixins: [utils], … });
  • 27. Hello.vue Components Componentes são estruturas que permitem criar elementos customizados para encapsular código reutilizável. Componentes podem contém subcomponentes, e serem declarados de maneira global ou local à uma instância. JS Vue.component('title', { props: ['message'] template: '<h1>{{message}}</h1>' }); Veja o resultado ⤵ https://goo.gl/rkQXGx HTML <title message="Bem-vindo(a)!">
  • 28. Hello.vue Projeto — MailBox 2k MailBox 2k “O melhor e-mail client dos anos 2000”
  • 30. Hello.vue Foi bom enquanto durou :D Obrigado!
  • 31. Hello.vue Foi bom enquanto durou :D