Aparência
Diferenciação entre Componentes "Base"
e "The"
Em projetos Vue que adotam uma estrutura modular, é comum usar convenções de nomenclatura para distinguir diferentes tipos de componentes. Uma dessas convenções é o uso dos prefixos "Base"
e "The"
nos nomes dos componentes. Essa prática ajuda a organizar o código e a entender rapidamente o propósito de cada componente.
Componentes "Base"
Os componentes com o prefixo "Base"
são componentes genéricos e reutilizáveis que podem ser utilizados em várias partes da aplicação. Eles geralmente encapsulam um conjunto comum de funcionalidades ou estilos e não têm dependências específicas do contexto em que são usados.
Características dos Componentes "Base"
:
- Reutilizáveis: Projetados para serem reutilizados em diferentes lugares dentro do projeto.
- Genéricos: Contêm lógica e estilos básicos que podem ser facilmente personalizados ou estendidos.
- Independentes de Contexto: Não possuem dependências específicas do contexto ou estado da aplicação.
Exemplos de Componentes "Base"
:
BaseButton.vue
: Um botão genérico que pode ser estilizado de várias formas.BaseModal.vue
: Um modal genérico que pode exibir qualquer conteúdo passado como slot.BaseInput.vue
: Um campo de entrada genérico que pode ser configurado para diferentes tipos de dados.
vue
<!-- BaseButton.vue -->
<script setup lang="ts">
const emit = defineEmits<{
(e: "click", event: Event): void;
}>();
withDefaults(
defineProps<{
variant?: string;
}>(),
{
variant: "primary",
}
);
const handleClick = (event: Event) => {
emit("click", event);
};
</script>
<template>
<button :class="['base-button', $props.variant]" @click="handleClick">
<slot />
</button>
</template>
<style scoped>
.base-button {
padding: 10px;
border-radius: 5px;
}
.base-button.primary {
background-color: blue;
color: white;
}
.base-button.secondary {
background-color: gray;
color: white;
}
</style>
Componentes "The"
Os componentes com o prefixo "The"
são componentes únicos e específicos para a aplicação. Eles geralmente representam partes importantes da interface do usuário e são usados apenas uma vez na aplicação, refletindo um contexto ou funcionalidade específica.
Características dos Componentes "The"
:
- Específicos: Projetados para um uso específico e único na aplicação.
- Contextuais: Contêm lógica e estilos específicos para um determinado contexto ou funcionalidade.
- Dependências: Podem depender de outros componentes ou do estado global da aplicação.
Exemplos de Componentes "The"
:
TheHeader.vue
: O cabeçalho principal da aplicação.TheFooter.vue
: O rodapé principal da aplicação.TheSidebar.vue
: A barra lateral principal da aplicação.
vue
<!-- TheHeader.vue -->
<script setup lang="ts">
import { useRouter } from "vue-router";
import BaseButton from "@/components/BaseButton.vue";
const emit = defineEmits<{
(e: "toggle-sidebar", event: Event): void;
}>();
const router = useRouter();
const toggleSidebar = (event: Event) => {
emit("toggle-sidebar", event);
};
const goToHome = () => {
router.push({ name: "home" });
};
const goToAbout = () => {
router.push({ name: "about" });
};
</script>
<template>
<header class="the-header">
<BaseButton variant="secondary" @click="toggleSidebar">Menu</BaseButton>
<h1>My Application</h1>
<nav>
<BaseButton variant="primary" @click="goToHome">Home</BaseButton>
<BaseButton variant="primary" @click="goToAbout">About</BaseButton>
</nav>
</header>
</template>
<style scoped>
.the-header {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #333;
color: white;
padding: 10px 20px;
}
nav {
display: flex;
gap: 10px;
}
</style>
Vantagens da Diferenciação entre "Base"
e "The"
- Organização e Clareza: Facilita a compreensão imediata do propósito de um componente apenas pelo nome.
- Reutilização: Componentes
"Base"
promovem a reutilização e reduzem a duplicação de código. - Manutenção: Componentes
"The"
encapsulam partes específicas da aplicação, tornando-as mais fáceis de manter e atualizar. - Consistência: As convenções de nomenclatura promovem consistência em todo o código base, facilitando a colaboração e revisão de código.
Estrutura de Diretórios
Para organizar esses componentes de forma clara, a estrutura de diretórios pode ser definida da seguinte maneira:
plaintext
src/
├── components/
│ ├── BaseButton/
│ │ ├── BaseButton.vue
│ │ └── index.ts
│ ├── BaseModal/
│ │ ├── BaseModal.vue
│ │ └── index.ts
│ ├── BaseInput/
│ │ ├── BaseInput.vue
│ │ └── index.ts
│ ├── index.ts
│ ├── TheHeader/
│ │ ├── TheHeader.vue
│ │ └── index.ts
│ ├── TheFooter/
│ │ ├── TheFooter.vue
│ │ └── index.ts
│ ├── TheSidebar/
│ │ ├── TheSidebar.vue
│ │ └── index.ts
│ └── ...
└── ...
Conclusão
Diferenciar componentes usando os prefixos "Base"
e "The"
é uma prática recomendada em projetos Vue que promove a organização, reutilização de código e clareza no desenvolvimento. Componentes "Base"
são reutilizáveis e genéricos, enquanto componentes "The"
são específicos e únicos para a aplicação. Essa convenção de nomenclatura não só melhora a manutenção e escalabilidade do código, mas também facilita a colaboração em equipe.