59
Vue.js O Framework Progressivo Slides originais: The Progressive Framework & Modern Frontend Development with Vue.js

Vue.js - o framework progressivo

Embed Size (px)

Citation preview

Page 2: Vue.js - o framework progressivo

Vinicius Reis

@vinicius73@luizVinicius73

Gravo aulas sobre Vue.js, Javascript e Laravel para codecasts.com.br

Engenheiro de Aplicações @ Decision6

Page 3: Vue.js - o framework progressivo

Frameworks são ferramentas criadas para ajudar na complexidade dos nossos projetos...

Frameworks

Page 4: Vue.js - o framework progressivo

...porém os frameworks podem produzir seu próprio punhado de complexidades.

Page 5: Vue.js - o framework progressivo

Complexidade da Aplicaçãovs

Complexidade do Framework

Page 6: Vue.js - o framework progressivo

Complexidade Inerentevs

Complexidade Instrumental

Page 7: Vue.js - o framework progressivo

A complexidade instrumental é o preço pago para diminuir

a complexidade inerente

Page 8: Vue.js - o framework progressivo

Complexidade Inerente

ComplexidadeInstrumental

Insuficiente

Page 9: Vue.js - o framework progressivo

Complexidade Inerente

ComplexidadeInstrumental

Exagerado

Page 10: Vue.js - o framework progressivo

"Escolha a ferramenta certa para o trabalho"

Page 11: Vue.js - o framework progressivo

Menos Mais

React Vue Angular Ember Meteor

Sistema de Templates

Backbone

Nível de complexidade

Page 12: Vue.js - o framework progressivo

Menos Mais

React Vue Angular Ember Meteor

Sistema de Templates

Backbone

React+ Vue+

Com bibliotecas

Page 13: Vue.js - o framework progressivo

Complexidade Inerente

ComplexidadeInstrumental

Escalabilidade não é uma via de mão única

Page 14: Vue.js - o framework progressivo

Foco na camada de apresentação+

Suporte opcional a bibliotecas

Page 15: Vue.js - o framework progressivo

Foco na camada de apresentação+

Suporte opcional a bibliotecas?

Page 16: Vue.js - o framework progressivo
Page 17: Vue.js - o framework progressivo
Page 18: Vue.js - o framework progressivo

Vue.jsO Framework Progressivo

Page 19: Vue.js - o framework progressivo
Page 20: Vue.js - o framework progressivo
Page 21: Vue.js - o framework progressivo

Renderização Declarativa

Page 22: Vue.js - o framework progressivo

DOMState

???

Manipulação de Estado e DOM

Page 23: Vue.js - o framework progressivo

Problemas com o DOM

● Re-renderização do DOM é custosa e disruptivo● Manter o DOM sincronizado com os estados é tedioso e muito

sussetível a erros.

DOM

Page 24: Vue.js - o framework progressivo
Page 25: Vue.js - o framework progressivo

Renderização Declarativa & Reativa

View

User Input

StateRender

A view apenas mapeia os estados de maneira

declarativa

O estado deve ser a única fonte de dados

Page 27: Vue.js - o framework progressivo

...e acessível.

<script src="vue.js"></script><script> new Vue({ // ... })</script>

Page 28: Vue.js - o framework progressivo

Demo: Todo ListEtapas para começar

Passo 1: Incluir o Vue com uma tag script

Passo 2: Não há passo 2

Page 29: Vue.js - o framework progressivo
Page 30: Vue.js - o framework progressivo

Sistema de Componentes

Page 31: Vue.js - o framework progressivo

A maioria das aplicações pode ser dividida em blocos de componentes aninhados

Nav

Content

Item

Sidebar

SideItem

Page 32: Vue.js - o framework progressivo

Cada componente é responsável por gerenciar um pedaço de DOM

Nav

Content

Item

Sidebar

Page 33: Vue.js - o framework progressivo

Toda a interface pode ser abstraída em uma arvore de componentes

Page 34: Vue.js - o framework progressivo

Componentes aninhados com Elementos Custumizados (Custom Tags)

<side-bar></side-bar><tabs> <tab>...</tab> <tab>...</tab></tabs>

Page 35: Vue.js - o framework progressivo

Comunicação entre componentes:

Propriedades entram, Eventos Saem

Parent

Child

PassProps

EmitEvents

Page 36: Vue.js - o framework progressivo

Demo Todo List usando componentes

Page 37: Vue.js - o framework progressivo

Client-Side RoutingSistema de Rotas

https://github.com/vuejs/vue-router

Page 38: Vue.js - o framework progressivo

/app/post/1 App

Post with { id: 1 }

/app/ App

Home

vue-routerSistema de rotas (client-side) baseado em componentes

Page 39: Vue.js - o framework progressivo

Larga EscalaGerenciamento de Estados

https://github.com/vuejs/vuex

Page 40: Vue.js - o framework progressivo

Problemas ComunsEm Grandes Aplicações Frontend

1. Compartilhar estados entre múltiplos componentes

2. Mudanças de estado imprevisiveis

Page 41: Vue.js - o framework progressivo

VuexGerenciamento de Estado Previsivel & Centralizado

Page 42: Vue.js - o framework progressivo

Build System&

Experiencia do Desenvolvimento (Workflow)

Page 43: Vue.js - o framework progressivo

Single File Vue ComponentsComponentes de Arquivo Único

Page 44: Vue.js - o framework progressivo

● Suporte a ES6 (simples e testavel)

● Template, Logica & Estilo

● Use o que você já sabe: HTML, CSS & Javascript

● Suporte embutido a pré-processadores: Babel, SASS, Stylus, Pug entre outros no mesmo arquivo

● O CSS pode ser restrito apenas ao componente

Single File Vue ComponentsComponentes de Arquivo Único

Page 45: Vue.js - o framework progressivo

npm install -g vue-clivue-cli init webpack-simple-2.0 my-appcd my-appnpm installnpm run dev

vue-cliInicie um projeto rapidamente

Page 46: Vue.js - o framework progressivo

+

5.3 1.x

Page 48: Vue.js - o framework progressivo

Extensão Oficial Chrome DevTools

Page 49: Vue.js - o framework progressivo

Debug Vuex com time-travel já incluso

Page 50: Vue.js - o framework progressivo

Vue 2.0 já em RC5rc.vuejs.org

Page 51: Vue.js - o framework progressivo

Menor

1.0.2626kb min+gzip

2.0 Runtime Build15.7kb min+gzip

Page 53: Vue.js - o framework progressivo

Virtual DOM

Render Function

Template compile

Virtual DOM Tree

ActualDOMTree

create

render

Watcher

track dependencies

Page 54: Vue.js - o framework progressivo

Render Functions:Poder maior que templates (Quando você precisar)

Render Function

Template compile

Virtual DOM Tree

render

Page 55: Vue.js - o framework progressivo

Server Side Rendering (SSR)Renderizar componentes no backend

Page 56: Vue.js - o framework progressivo

Renderização Nativa

● Syntaxe compatível com Vue.js para obter uma renderização nativa

● Mantido por Alibaba Group (Uma das maiores empresas de tecnologia da China)

● WIP: Colaboração oficial usando a renderização do Vue 2.0

Page 59: Vue.js - o framework progressivo

http://bit.ly/vue-js-progressive-slides-br