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
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
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
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: ‘..’} ]
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: [] }
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: [] }
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">
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>
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>
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
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>
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>
Gerente ([email protected]) Para: Dev ([email protected]) 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 ([email protected]) Para: Dev ([email protected]) Assunto: Só mais um detalhe. PS: Você tem 30 minutos. Att, Gerente. ̿̿ ̿̿ ̿̿ ̿'̿'\̵͇̿̿\з=( ▀ ͜͞ʖ▀)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿ 07:37 Veja o resultado ⤵ https://goo.gl/ivKou8
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>
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], … });
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)!">