Escrito por: Eduardo Gonçalves Souza
Publicado em: 20/02/2025
Última atualização: 20/02/2025
No desenvolvimento web, a escolha do framework e das ferramentas é crucial para a estrutura, escalabilidade e manutenção de um projeto. Duas estratégias se sobressaem quando falamos de Vue.js: a API de Opções e a API de Composições. As duas proporcionam formas diferentes de organizar e administrar a lógica de um aplicativo, cada uma com seus benefícios e casos de uso particulares.
A API de Opções é a maneira tradicional de utilizar o Vue.js. Presente desde o início, sua sintaxe se baseia em um objeto de opções para estruturar as propriedades de um componente.
Parece complicado, mas na prática é mais simples do que parece!
Veja como fica:
<template>
<div>
<p>Contagem: {{ count }}</p>
<br />
<button v-on:click="increment">Incrementar</button>
<button v-on:click="reset">Resetar</button>
</div>
</template>
<script>
export default {
// Estado do componente
data() {
return {
count: 0
};
},
// Métodos do componente
methods: {
increment() {
this.count++;
},
reset() {
this.count = 0;
}
},
// Propriedade computada
computed: {
doubleCount() {
return this.count * 2;
}
}
};
</script>
data
: Determina as informações reativas do componente, ou seja, onde são declaradas as variáveis que terão valores dinâmicos.methods
: Onde especificamos funções personalizadas. Estas funções têm a capacidade de alterar estados, reagir a eventos do usuário e realizar lógicas específicas.computed
: Define propriedades computadas que derivam dos dados, ou seja, valores que só precisam ser calculados uma vez e atualizados apenas quando alguma variável relacionada muda.O Vue.js tambem possue outras opções, como name
, components
, props
, directives
, watch
e emits
, entre outros. No entanto, podemos explorar mais esses aspectos em um artigo futuro.
Vamos examinar algumas das propriedades e restrições apresentadas pela API de Opções:
this
: As variáveis definidas na propriedade data
só podem ser acessadas por meio do contexto this.
, conforme ilustrado nos métodos increment
e reset
.data
,methods
, computed
. Isso pode dividir a lógica associada a uma funcionalidade semelhante, tornando mais difícil a leitura e a manutenção do código em projetos de maior escala.A API de Composição é a nova maneira de estruturar o código, introduzida no Vue 3, com a API de Composição, é possível estruturar a lógica do seu componente de maneira mais transparente e intuitiva.
Vamos ver o quanto realmente mudou e esclarecer qualquer dúvida sobre a API de Composição.
Vou criar o mesmo aplicativo, mas dessa vez com a API de Composição, observe como fica:
<template>
<div>
<p>Contagem: {{ count }}</p>
<br />
<button v-on:click="increment">Incrementar</button>
<button v-on:click="reset">Resetar</button>
</div>
</template>
<script setup>
import { ref, computed } from "vue";
// Estado reativo
const count = ref(0);
// Métodos
function increment() {
count.value++;
}
function reset() {
count.value = 0;
}
// Propriedade computada
const doubleCount = computed(() => count.value * 2);
</script>
<script setup/>
: É aonde toda logica e código que não será renderizando para o usuário é colocado.ref()
: É o que define se aquela variável vai ser ou não reativa.computed()
: Faz a mesma função do computed
da Options APIVamos explorar algumas das funcionalidades necessárias trazidas pela API de Composição?
ref()
para deixar a variável reativa, por exemplo, se count
não tivesse o ref()
, quando atualizado ele não atualizaria sozinho e seria necessario regarregar a pagina.ref()
só poderão ser acessados utilizando .value
como utilizado nas funções increment
e reset
.Abaixo está um gif do aplicativo que criamos nesse artigo com o Vue.js:
Cada API no Vue.js tem características únicas que interferem na forma como o código é organizado, gerenciado e interpretado. A seleção entre Options API e Composition API impacta principalmente a estruturação do código e facilidade de leitura.Abaixo, destacamos as principais diferenças entre elas: Abaixo, destacamos as principais diferenças entre elas:
Característica | Options API | Composition API |
---|---|---|
Estruturação do Código | Estrutura o código de acordo com o tipo de opção (data , methods , computed , etc.), possibilitando a fragmentação da lógica em partes complexas. | Organiza o código por função, aprimorando an interpretação e aproximando-o do JavaScript moderna. |
Reatividade | Gerencia automaticamente as propriedades reativas definidas em data. | Requer a utilização clara de ref() e reactive() para tornar variáveis com valores dinamicos. |
Legibilidade | Para aqueles que já tem experiência da Programação Orientada a Objetos (POO), pode ser mais familiar, embora possa ser menos intuitiva para projetos de grande escala. | Ideal para desenvolvedores com experiência em JavaScript, além de proporcionar um suporte excepcional ao TypeScript. |
Curva de Aprendizagem | Perfeito para iniciantes, pois segue uma estrutura organizada e previsível, na qual cada função do componente é dividida em blocos específicos. | Possui uma curva de aprendizado mais acentuada, pois exige um entendimento mais profundo de conceitos como reatividade. No entanto, torna-se mais intuitiva com a prática. |
Manutenção e Escalabilidade | Em projetos de grande escala, a manutenção pode se tornar um desafio, pois a lógica de um componente é fragmentada em várias seções, dificultando a leitura e a depuração. | Ideal para projetos escaláveis, pois simplifica a organização do código e permite a divisão de responsabilidades de forma modular e reutilizável. |
A Options API é ideal para:
data
, methods
, computed
, etc.).A Composition API é mais recomendada para:
data
, methods
, etc.), a lógica pode ser agrupada por funcionalidade, simplificando a manutenção.ref()
, você ganha mais controle sobre o estado.Agora que você conhece as diferenças entre a API de Opções e a API de Composição, está pronto para escolher a melhor opção para o seu projeto. Lembre-se de que cada uma tem suas vantagens e desvantagens, tudo depende da complexidade do seu projeto.
No entanto, quando se trata de preferência pessoal, geralmente prefiro usar a Composition API em meus projetos pessoais, devido à otimização com TypeScript e à capacidade de agrupar as lógicas.
No entanto, independentemente da API escolhida, o Vue.js continua sendo uma ferramenta poderosa e flexível para o desenvolvimento Front-End. 🚀