반응형
DDD 모델의 도메인 대 Vuex 작업
Vue 프로젝트를 진행하고 있는데 점점 더 커지고 있어서 프로젝트 전체를 다시 쓰고 아래와 같은 아키텍처로 MVVM과 DDD를 적용합니다.
- UI 계층(MVVM ViewModel=vue/Model=Vuex)
- 도메인 레이어
- 서버층(파이어베이스)
하지만 Vuex action을 어떻게 건축에 사용할지 궁금합니다.
이 참조문헌에서는 3. Actions to Make API Calls and Commit the Data , vuex actions는 api를 담당해야 하지만 이러한 점들이 있기 때문에 최적의 솔루션은 아니라고 생각합니다.
- Vuex 액션에 모든 논리를 쓴다면 엄청난 액션 리스트가 있습니다.
- 이러한 로직(메서드)이 어떤 상태도 커밋할 필요가 없는 경우(예를 들어 CVC에서 cvc를 체크하고 true/false 결과만 반환) Vuex 액션으로 써야 하는 이유.
- 도메인 로직을 어디에 써야 합니까?모두 활동 중?
따라서 작업 없이 도메인 로직을 작성하고 필요에 따라 그 안에서 상태를 커밋합니다.
[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 액션을 도메인 로직으로 사용하는 것이 좋은지, Vuex 로직과 doamin 로직을 조화시키는 방법이 무엇인지 묻고 싶습니다.
당신의 모든 의견을 환영합니다, 감사합니다!
언급URL : https://stackoverflow.com/questions/60710189/domain-vs-vuex-action-in-ddd-model
반응형
'programing' 카테고리의 다른 글
Vue.js로 작성된 SPA 로딩 화면을 구현하려면 어떻게 해야 합니까? (0) | 2022.07.10 |
---|---|
PWA가 Play Store에 웹 앱과 TWA로 배포될 때 PWA 분석을 처리하는 방법 (0) | 2022.07.10 |
부모 및 손자녀 간의 동기화 수식자 Vue 2 사용 (0) | 2022.07.10 |
Spring Framework의 @Inject와 @Autowired의 차이점은 무엇입니까?어떤 조건으로 사용하면 좋을까요? (0) | 2022.07.10 |
VNode를 Vue 템플릿으로 렌더링할 수 있습니까? (0) | 2022.07.10 |