SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Vue.js
O poder das Render Functions
render: h => h(App)
Vinicius Reis
@vinicius73@LuizVinicius73
Gravo aulas sobre Vue.js, JavaScript e Laravel para codecasts.com.br
Engenheiro de Aplicações @ Decision6
Vue.js, um framework progressivo
Vue.js, um framework progressivo
Nascido no final de 2013, Vue.js é classificado
como um Framework Progressivo para a
criação de interfaces baseadas em
componentes.
Com Vue.js construímos aplicações altamente
escaláveis independente do tipo e nível do
projeto.
Vue.js, um framework progressivo
Progressivo pois ele não é monolítico, seu core
é pequeno e especializado. Em seu
guarda-chuva estão pacotes e projetos para
ajudar ajudar o desenvolvedor e seu projeto.
- Vue CLI
- Vue Router
- Vuex
- Vue Test Utils
- Vários outros em
https://github.com/vuejs
Vue.js, um framework progressivo
A cereja do bolo são os Single File Components (SFC)
São arquivos com extensão .vue onde
são declarados
- Template (Visual)
- JavaScript (Comportamento)
- CSS (Estilo)
Neles é possível usar Babel,
TypeScript, PUG, Sass, Stylus, JSX e
inúmeras outras possibilidades de
pré-processamento.
PUG/Jade Render Function JSX
Virtual-DOM
Virtual-DOM
A sintaxe de template do Vue.js é
(pré-)processada gerando código JavaScript.
Ele gera a função render e devolve um objeto
JavaScript. Este objeto é o V-DOM, que é
analisado para determinar como e quando os
nós reais de DOM vão ser atualizados.
Declarativo X Imperativo
Declarativo
Declarativo descreve como algo é, não como
ele faz para ser.
É uma forma extremamente amigável para a
criação de interfaces, html ou não.
Ao utilizar template, nosso código
automaticamente recebe tratamento contra
XSS.
Imperativo
Descreve como algo será construído, passo a
passo.
Esta abordagem apesar de ser mais complexa
em alguns aspectos, é mais poderosa e flexível,
pois não se limita a uma sintaxe paralela.
Ao usar essa abordagem, você possa a ter
controle refinado sobre a estrutura e
comportamento do componente.
Existem situações onde usar Render
Functions é a melhor opção
Componentes Funcionais
Componentes funcionais
Vue.js permite criar componentes especiais,
conhecidos como componentes funcionais.
Eles são componentes que não possuem
instância, logo não ocupam memória após
serem criados.
São extremamente úteis para o
encapsulamento de decisão ou grandes
porções de código que não possuem uma
grande regra de negócio, porém seu uso não se
limita a isso.
Componentes funcionais
Criação de elementos ricos e extremamente
reutilizáveis.
O lado negativo é não ter acesso a esses
componentes pelo vue-dev-tools, afinal eles
não possuem instância.
Componentes funcionais
Criação de regras mais elaboradas
que filtros ou diretivas.
Pense em uma porção de elemento
ou regra de negócio que possa ser
centralizada e será fácil criar
componentes funcionais.
Componentes funcionais
Outro uso prático é simplificar a declaração de
outros componentes, como um QSelect do Quasar.
As opções aqui são estáticas, não há motivação para
manter uma instância para este componente.
No vue-dev-tools ficará visível apenas QSelect.
Composição com Render Function
Composição com Render Function
Vue.js permite várias formas de composição e o
JavaScript também.
É possível criar uma função que retorna um
componente válido, mudando apenas o que
desejamos mudar.
Neste exemplo recebemos um componente,
seu nome e algumas opções extras.
Composição com Render Function
Sobrescrever props padrão, e
gerar componentes menores e
mais assertivos é muito fácil.
Também é possível criar funções
render customizadas, para
receber mais argumentos.
Obrigado
Referências
- https://vuejs.org/v2/guide/render-function.html
- https://blog.codecasts.com.br/por-que-vue-js-e-nao-react-d5b58c09d193
- https://blog.codecasts.com.br/heranca-e-composicao-com-vue-js-c74177f37e36
- https://alligator.io/vuejs/introduction-render-functions/
- https://vuejs-brasil.com.br/render-functions-no-vue-js-2-0/
- https://www.youtube.com/watch?v=KS4eizPXRCQ

Mais conteúdo relacionado

Mais procurados

デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
Artifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrogArtifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrogCloud Study Network
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.jsStefan Stölzle
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaEdureka!
 
DevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationDevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationMaruti Gollapudi
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理H2O Space. Co., Ltd.
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab IntroductionKrunal Doshi
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flowKnoldus Inc.
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDocker, Inc.
 

Mais procurados (20)

デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
Version control
Version controlVersion control
Version control
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 
Source control
Source controlSource control
Source control
 
Artifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrogArtifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrog
 
Full Stack Flutter Testing
Full Stack Flutter Testing Full Stack Flutter Testing
Full Stack Flutter Testing
 
Github basics
Github basicsGithub basics
Github basics
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
DevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationDevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay Application
 
Git - Level 2
Git - Level 2Git - Level 2
Git - Level 2
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
Github
GithubGithub
Github
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flow
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
 

Semelhante a Vue.js o poder das render functions

Walker - Criando componentes interoperaveis com Vue.js para o WordPress
Walker - Criando componentes interoperaveis com Vue.js para o WordPressWalker - Criando componentes interoperaveis com Vue.js para o WordPress
Walker - Criando componentes interoperaveis com Vue.js para o WordPressWordPress Floripa
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3Danilo Pinotti
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivoVinicius Reis
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoGDGFoz
 
Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Danilo Pinotti
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoftMarcius Brandão
 
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiComponentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiFábio Luiz Esperati Pagoti
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Vue.js - Framwork Progressivo
Vue.js - Framwork ProgressivoVue.js - Framwork Progressivo
Vue.js - Framwork ProgressivoBruno Santana
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIFelipe Knappe
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosDom Digital
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 

Semelhante a Vue.js o poder das render functions (20)

Walker - Criando componentes interoperaveis com Vue.js para o WordPress
Walker - Criando componentes interoperaveis com Vue.js para o WordPressWalker - Criando componentes interoperaveis com Vue.js para o WordPress
Walker - Criando componentes interoperaveis com Vue.js para o WordPress
 
Introdução ao VUE JS
Introdução ao VUE JSIntrodução ao VUE JS
Introdução ao VUE JS
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivo
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativo
 
Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
 
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiComponentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Vue.js - Framwork Progressivo
Vue.js - Framwork ProgressivoVue.js - Framwork Progressivo
Vue.js - Framwork Progressivo
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticos
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 

Vue.js o poder das render functions

  • 1. Vue.js O poder das Render Functions render: h => h(App)
  • 2. Vinicius Reis @vinicius73@LuizVinicius73 Gravo aulas sobre Vue.js, JavaScript e Laravel para codecasts.com.br Engenheiro de Aplicações @ Decision6
  • 3. Vue.js, um framework progressivo
  • 4. Vue.js, um framework progressivo Nascido no final de 2013, Vue.js é classificado como um Framework Progressivo para a criação de interfaces baseadas em componentes. Com Vue.js construímos aplicações altamente escaláveis independente do tipo e nível do projeto.
  • 5. Vue.js, um framework progressivo Progressivo pois ele não é monolítico, seu core é pequeno e especializado. Em seu guarda-chuva estão pacotes e projetos para ajudar ajudar o desenvolvedor e seu projeto. - Vue CLI - Vue Router - Vuex - Vue Test Utils - Vários outros em https://github.com/vuejs
  • 6. Vue.js, um framework progressivo A cereja do bolo são os Single File Components (SFC) São arquivos com extensão .vue onde são declarados - Template (Visual) - JavaScript (Comportamento) - CSS (Estilo) Neles é possível usar Babel, TypeScript, PUG, Sass, Stylus, JSX e inúmeras outras possibilidades de pré-processamento.
  • 9. Virtual-DOM A sintaxe de template do Vue.js é (pré-)processada gerando código JavaScript. Ele gera a função render e devolve um objeto JavaScript. Este objeto é o V-DOM, que é analisado para determinar como e quando os nós reais de DOM vão ser atualizados.
  • 11. Declarativo Declarativo descreve como algo é, não como ele faz para ser. É uma forma extremamente amigável para a criação de interfaces, html ou não. Ao utilizar template, nosso código automaticamente recebe tratamento contra XSS.
  • 12. Imperativo Descreve como algo será construído, passo a passo. Esta abordagem apesar de ser mais complexa em alguns aspectos, é mais poderosa e flexível, pois não se limita a uma sintaxe paralela. Ao usar essa abordagem, você possa a ter controle refinado sobre a estrutura e comportamento do componente.
  • 13. Existem situações onde usar Render Functions é a melhor opção
  • 15. Componentes funcionais Vue.js permite criar componentes especiais, conhecidos como componentes funcionais. Eles são componentes que não possuem instância, logo não ocupam memória após serem criados. São extremamente úteis para o encapsulamento de decisão ou grandes porções de código que não possuem uma grande regra de negócio, porém seu uso não se limita a isso.
  • 16. Componentes funcionais Criação de elementos ricos e extremamente reutilizáveis. O lado negativo é não ter acesso a esses componentes pelo vue-dev-tools, afinal eles não possuem instância.
  • 17. Componentes funcionais Criação de regras mais elaboradas que filtros ou diretivas. Pense em uma porção de elemento ou regra de negócio que possa ser centralizada e será fácil criar componentes funcionais.
  • 18. Componentes funcionais Outro uso prático é simplificar a declaração de outros componentes, como um QSelect do Quasar. As opções aqui são estáticas, não há motivação para manter uma instância para este componente. No vue-dev-tools ficará visível apenas QSelect.
  • 20. Composição com Render Function Vue.js permite várias formas de composição e o JavaScript também. É possível criar uma função que retorna um componente válido, mudando apenas o que desejamos mudar. Neste exemplo recebemos um componente, seu nome e algumas opções extras.
  • 21.
  • 22. Composição com Render Function Sobrescrever props padrão, e gerar componentes menores e mais assertivos é muito fácil. Também é possível criar funções render customizadas, para receber mais argumentos.
  • 24. Referências - https://vuejs.org/v2/guide/render-function.html - https://blog.codecasts.com.br/por-que-vue-js-e-nao-react-d5b58c09d193 - https://blog.codecasts.com.br/heranca-e-composicao-com-vue-js-c74177f37e36 - https://alligator.io/vuejs/introduction-render-functions/ - https://vuejs-brasil.com.br/render-functions-no-vue-js-2-0/ - https://www.youtube.com/watch?v=KS4eizPXRCQ