Vuex ne vous restreint pas vraiment dans la façon dont vous voulez structurer votre code. Il impose plutôt un set de principes de haut niveau :
-
Le state d'application est centralisé dans le store.
-
La seule façon de muter le state est de commiter des mutations, qui sont des transactions synchrones.
-
La logique asynchrone doit être composée et encapsulée dans des actions.
Tant que vous suivez ces règles, c'est à vous de structurer votre projet. Si votre fichier de store devient trop gros, commencez simplement par séparer les actions, mutations et getters dans des fichiers séparés.
Pour une application non-triviale, nous aurons probablement besoin de faire appel à des modules. Voici un exemple de structure de projet :
├── index.html
├── main.js
├── api
│ └── ... # abstractions for making API requests
├── components
│ ├── App.vue
│ └── ...
└── store
├── index.js # Là où l'on assemble nos modules et exportons le store
├── actions.js # Actions racine
├── mutations.js # Mutations racine
└── modules
├── cart.js # cart module
└── products.js # products module
Vous pouvez jeter à un œil à l'exemple Shopping Cart.