forum icon indicating copy to clipboard operation
forum copied to clipboard

Estrutura de diretórios e nomenclatura com Vuex e sem Vuex.

Open cristofersousa opened this issue 7 years ago • 4 comments

Gostaria de saber qual modelo de estrutura de diretórios vocês usam, o Vue por ser um fw e deixar isso ao modo que o DEV resolva o melhor para ele, é legal, mas quando falamos de uma equipe grande com projeto de médio/grande porte, qual é a estrutura que vocês usam? Alguma nomenclatura especial para componentes comuns da aplicação algo especifico outros?

cristofersousa avatar Feb 01 '18 20:02 cristofersousa

Eu uso a estrutura fornecida pelo quasar-cli, consegui me adaptar bem a ela.

Gosto da forma como os componentes do Router são carregados: image

Por enquanto dividindo services, helpers, config image

O meu servico http.js é em axios, fica assim: image

E o model fica assim: image

danielschmitz avatar Feb 02 '18 02:02 danielschmitz

Aqui na nossa equipe nós trabalhamos com o conceito de "telas" screens, cada screen tem sua pasta components e store (quando necessário).

Além disso mantemos os arquivos de teste na mesma pasta dos demais arquivos.

screens/
  Home/
    components/
      Index.vue
      Index.spec.vue
  User/
    components/
      Index.vue
      Index.spec.vue
      Edit.vue
      Edit.spec.vue
    store/
      actions.js
      actions.spec.js
      getters.js
      getters.spec.js
      index.js
      mutations.js
      mutations.spec.js
      types.js
      types.spec.js

Quando necessitamos de um componente mais genérico dentro da aplicação o colocamos em uma pasta chamada shared:

shared/
  form/
    DateInput.vue
    DateInput.spec.vue

As rotas colocamos em uma pasta chamada routes e arquivos de tradução em uma pasta chamada i18n.

Ainda temos outra pasta onde adicionamos coisas genéricas como serviços de conexão com API's, manipulação de dados complexos, etc., para isso usamos uma pasta chamada services, tendo esse resultado no final:

src/
  i18n/
  routes/
  screens/
  services/
  shared/

Já utilizamos a estrutura de pastas separadas por camadas (componentes, store, etc) mas gostamos mais dessa separada por telas (screens).

vitornogueira avatar Feb 02 '18 13:02 vitornogueira

Estou trabalhando com Vue.js desde o final de 2016 e cheguei nessa arquitetura.

captura de tela 2018-02-02 as 10 21 42

Abstraí a camada de serviços com as actions da minha Store que usam o axios pra fazer as requisições pro back-end. E minha Store é dividida em módulos, cada um trabalhando um contexto de dado e usando as constantes de types para os getters, mutations e actions.

captura de tela 2018-02-02 as 10 24 01

PS. Ignore as bagunças e nomenclatura dos módulos.

Meus componentes seguem o pattern de dumb/smart onde os componentes são dumbs e só recebem props e os containers são smarts que conectam a store aos componentes e passam os estados pra eles.

As views são as páginas, é só uma maneira melhor de agrupar containers.

Router tem o router e alguns módulos para as rotas.

Style tem variáveis, reset e uns mixins pra stylus.

Assets são imagens, ícones, vídeos e outros recursos.

VitorLuizC avatar Feb 02 '18 14:02 VitorLuizC

Eu tenho gostado bastante desta estrutura https://blog.codecasts.com.br/arquitetura-de-projetos-vue-js-com-ddd-a2bc26817793 tenho usado bastante.

alexsandro-xpt avatar Feb 08 '18 12:02 alexsandro-xpt