Skip to content
On this page

MVI

MVI

cycle.js라는 라이브러리에서 처음 제시한 패턴으로 View와 Model를 분리하지만 사용자의 이벤트별로 수행되는 action들을 정의한 Intent 영역을 Controller로 두는 특징이 있습니다.

해당 패턴은 다음과 특징이 있습니다.

  • Controller를 2개의 layer로 나눈다.
    • View의 UI를 통해서 전달된 event별 사용자의 의도를 파악하는 로직들
    • 의도별로 model을 조작하는 함수들
  • Intent와 View 사이의 의존성이 없다.
    • 하나의 Intent 로직이 여러 개의 View에서도 사용할 수 있다.
    • 개별 Intent 로직 단위의 테스트들로 전체 View 테스트를 대체할 수 있다.
    • 컴포넌트 간의 통신(props)에 의존하지 않아서 일관된 상태를 유지할 수 있다.