Я думаю, что есть много способов организовать ваш магазин приложений, но вот как я делаю большую часть времени:
+ store
- actions.js // global actions (like a for snackbar singleton, loader etc)
- getters.js // global getters (like a for snackbar singleton, loader etc)
- index.js // import all other indexes (in the subfolders)
- mutations.js // global mutations (like a for snackbar singleton, loader etc)
- state.js // global state (like a for snackbar singleton, loader etc)
+ common
- actions.js // common actions (shared with all resources)
- getters.js // common getters (shared with all resources)
- mutations.js // common mutations (shared with all resources)
- state.js // common state (shared with all resources)
+ subfolder1 // a resource (like an article, a user, ...)
- index.js // imports common/* files or siblings overriding it, and exports it
- actions.js // optional file overriding common/actions.js
- getters.js // optional file overriding common/getters.js
- mutations.js // optional file overriding common/mutations.js
- state.js // optional file overriding common/state.js
+ subfolder2 // an other resource ...
+ ...
В папке common
имеется база кода для «обычных» ресурсов, это помогает не дублировать ее для каждого ресурса, с которым нужно иметь дело. При необходимости вы можете переопределить его для определенного ресурса через специальный файл, который переопределяет необходимые методы.
Вот пример файла, переопределяющего метод fetchDB
файла common/actionos.js
для определенного ресурса:
import { actions as baseActions } from "../common/actions"
const actions = Object.assign({}, baseActions) // we don't want to edit the base instance
// overrides the common method
actions.fetchDb = async function(context, args) {
args.params.url = "myresource"
await baseActions.fetchDb.call(this, context, args.params)
}
export default actions
Основным преимуществом является то, что он уменьшает дублирование кода и позволяет разделять ваши ресурсы, предоставляя вам возможность адаптировать их поведение при необходимости.
Как вы думаете, эта организация может удовлетворить ваши потребности?