Я работаю над проектом Vue, и он становится больше, поэтому я переписываю весь проект и применяю архитектуру, аналогичную приведенной ниже, MVVM и DDD.
- Уровень пользовательского интерфейса (MVVM ViewModel = vue / Model = Vuex)
- Уровень домена
- Уровень сервера (Firebase)
но мне интересно как использовать действие Vuex в архитектуре
В этой ссылке 3. Используйте действия для выполнения вызовов API и фиксации данных , действие vuex должно отвечать за API, но я думаю, что это не лучшее решение, потому что эти пункты.
- У нас есть огромные списки действий, если мы записывать каждую логику c в действии Vuex.
- Если эти логики (методы) не должны фиксировать какие-либо состояния (например, checkCV C для проверки cv c и возвращать только true / false результат ), почему я должен написать как действие Vuex.
- , куда писать доменную логи c? Все в действии?
Поэтому я пишу доменную логи c без действий и фиксирую состояние (если необходимо) внутри него.
[domain/talks.ts]
export const getTalk = (uid: string, talkTo: string,) => {
const server = new Talks(uid)
server.getTalks(talkTo).subscribe(talk => {
store.commit('profile/talks/updateTalk', {to: talkTo, talk: talk})
})
}
Мне кажется, это хорошо, но этот подход становится ненастроенным в Vue компоненте.
[Talk.vue]
<template lang="pug">
//display chat list
ul
li.list(v-for="message in talk" :key="message.id") {{message}}
</template>
<script lang="ts">
import store from "@/model/vuex/talk.ts"
import {getTalk} from "@/domain/talk.ts"
@Component
export default class Talk extends Vue{
subscription?:Subscription
get talks(){
return store.talks
}
created():void{
this.subscription = getTalk() // <- **here commit talk state implicitly**
}
destroy():void{
this.subscription.unsubscribe()
}
}
....
Этот компонент просто выбирает данные разговора и отображает список чата. Но этот компонент должен знать, что делает метод getTalk (компонент должен неявно знать состояние фиксации этого метода).
Поэтому мой вопрос хорошо ли использовать действие Vuex в качестве логики домена c, как согласовать vuex и doamin logi c.
Приветствую каждое ваше мнение, спасибо!