Aparência
Pastas Globais vs Pastas de Módulos
Na estrutura modular de um projeto Vue, a diferenciação entre pastas globais e pastas específicas dos módulos é crucial para manter a organização e a escalabilidade do projeto. Aqui está uma explicação detalhada sobre a diferença entre esses dois tipos de pastas:
Pastas Globais
As pastas na raiz do diretório src
que não estão dentro da pasta modules
são consideradas globais. Essas pastas contêm recursos, componentes, e funcionalidades que são utilizados em toda a aplicação. Vamos detalhar cada uma:
@types/
:- Descrição: Contém declarações de tipos globais em TypeScript.
- Uso: Define tipos que são utilizados em várias partes do projeto para garantir a tipagem correta e evitar erros de compilação.
assets/
:- Descrição: Armazena recursos estáticos como imagens, fontes e arquivos de mídia.
- Uso: Disponibiliza esses recursos para serem utilizados por qualquer parte da aplicação, incluindo componentes globais e específicos de módulos.
components/
:- Descrição: Contém componentes Vue que são globais e podem ser utilizados em toda a aplicação.
- Uso: Componentes reutilizáveis que não são específicos a nenhum módulo, como botões, modais e outros elementos UI comuns.
composables/
:- Descrição: Armazena funções de composição (composables) que encapsulam lógica reutilizável.
- Uso: Funções que podem ser usadas por qualquer componente ou módulo para adicionar funcionalidades como gerenciamento de permissões ou internacionalização.
helpers/
:- Descrição: Contém funções auxiliares que fornecem utilitários comuns.
- Uso: Utilitários que ajudam na implementação de funcionalidades comuns e podem ser usados globalmente, como a função
register-modules.ts
.
mirage/
:- Descrição: Configurações para o Mirage JS, utilizado para simular APIs durante o desenvolvimento.
- Uso: Ajuda a testar funcionalidades sem depender de uma API backend real.
plugins/
:- Descrição: Plugins Vue que adicionam funcionalidades globais à aplicação.
- Uso: Configurações e inicializações de plugins como internacionalização (i18n), modo de cor, controle de permissões, e PrimeVue.
router/
:- Descrição: Configuração principal de rotas da aplicação.
- Uso: Define as rotas globais que podem ser acessadas de qualquer lugar na aplicação.
services/
:- Descrição: Contém serviços para chamadas de APIs e outras funcionalidades de backend.
- Uso: Serviços que podem ser usados globalmente para comunicação com servidores externos.
stores/
:- Descrição: Configuração de estado global usando Pinia.
- Uso: Stores que mantêm o estado global da aplicação, compartilhado entre diferentes partes da aplicação.
utils/
:- Descrição: Funções utilitárias globais.
- Uso: Utilitários que podem ser usados em qualquer parte da aplicação, como funções para modo escuro ou termos de internacionalização.
views/
:- Descrição: Views globais da aplicação.
- Uso: Componentes de view que são usados globalmente, como o componente principal
App.vue
.
Pastas de Módulos
As pastas dentro do diretório modules
são específicas para funcionalidades ou áreas distintas da aplicação. Cada módulo é autônomo e encapsula seus próprios componentes, funções de composição, serviços, stores de estado, utilitários e Views. Vamos detalhar a estrutura de um módulo:
components/
:- Descrição: Componentes específicos para o módulo.
- Uso: Componentes que são utilizados apenas dentro do contexto do módulo, como
BaseComponentA
,TheComponentA
, eTheComponentB
.
composables/
:- Descrição: Funções de composição específicas do módulo.
- Uso: Funções reutilizáveis que encapsulam lógica específica ao módulo.
services/
:- Descrição: Serviços específicos do módulo.
- Uso: Funções de serviço que realizam chamadas de API ou outras operações específicas ao módulo.
stores/
:- Descrição: Stores de estado específico do módulo.
- Uso: Gerenciamento de estado que é necessário apenas dentro do módulo, como
storeA.ts
estoreB.ts
.
utils/
:- Descrição: Utilitários específicos do módulo.
- Uso: Funções utilitárias que são usadas somente dentro do módulo.
views/
:- Descrição: Views específicas do módulo.
- Uso: Componentes de view que são exclusivos ao módulo, como
viewHome.vue
.
index.ts
:- Descrição: Ponto de entrada do módulo.
- Uso: Exporta e inicializa funcionalidades do módulo.
moduleA.vue
:- Descrição: Componente principal do módulo.
- Uso: Pode servir como ponto central de montagem para o módulo.
router.ts
:- Descrição: Configuração de rotas específicas do módulo.
- Uso: Define as rotas que pertencem ao módulo, integrando-se com o roteamento global da aplicação.
Diferenças Principais
Escopo de Utilização:
- Globais: Utilizados em toda a aplicação, acessíveis por qualquer componente ou módulo.
- Módulos: Restringidos ao escopo do próprio módulo, não são diretamente acessíveis fora dele.
Reutilização:
- Globais: Projetados para serem reutilizáveis em diferentes contextos e módulos.
- Módulos: Específicos para o contexto e lógica do módulo, reutilizados apenas dentro do próprio módulo.
Manutenção e Isolamento:
- Globais: Alterações podem impactar múltiplas partes da aplicação.
- Módulos: Alterações são isoladas, impactando apenas o próprio módulo, facilitando a manutenção.
Conclusão
A distinção clara entre pastas globais e pastas de módulos em um projeto Vue promove a organização e a escalabilidade do projeto. Enquanto as pastas globais fornecem recursos e funcionalidades que podem ser utilizados em toda a aplicação, as pastas de módulos encapsulam funcionalidades específicas, permitindo um desenvolvimento modular e colaborativo eficiente.