이 영역을 누르면 첫 페이지로 이동
나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

페이지 맨 위로 올라가기

나눔코딩

02. Vue CLI 3 - Vuex

  • 2020.09.10 07:57
  • 16. Vue JS/Vue 3
OS Windows 10 Home 64bit 버전 1903 (OS 빌드 18362.836)
Vue CLI 3.0.0
Vuex 4.0.0
Edit Tool Intellij IDEA 2019.1.3

 

 

# 구조

Vuex 구조

  Vuex 구조   설명
  Actions   비동기 로직 = axios
  Mutations   동기 로직
  State   컴포넌트 간에 공유하는 데이터 = data() { ... }

 

  Vue 주요 구성   설명
  state   컴포넌트 간에 공유하는 데이터 = data() { ... }
  getters   중복된 데이터 처리
  mutations   동기 로직 처리
  actions   비동기 로직 처리

 

  Vue 컨셉   설명
  State   컴포넌트 간에 공유하는 데이터 = data() { ... }
  View   데이터를 표시하는 화면 = <template>...</template>
  Action   사용자의 입력에 따라 데이터를 변경 = methods

Vue 패턴

 

#1. 소개
Vuex 란

무수히 많은 컴포넌트의 데이터를 관리하기 위한 상태 관리 패턴이자 라이브러리

React 의 Flux 패턴에서 기인함

여러개의 하위 컴포넌트를 가졌을 때의 props 를 계속해서 적어주는 불편함을 해결할 수 있다.

(eventBus 를 이용하여 해결할 수 있지만, 어디서 어떻게 보냈는지에 대한 한계가 존재한다)

 

Flux 란

MVC 패턴의 복잡한 흐름 문제를 해결하는 개발 패턴 - Undirectional data flow

Flux 는 복잡한 흐름이 아닌 단방향으로 흐름이 흘러간다

    1. actions: 화면에서 발생하는 이벤트 또는 사용자의 입력

    2. dispatcher: 데이터를 변경하는 방법, 메소드 (model을 바꾸기 위한 역할)

    3. model: 화면에 표시할 데이터

    4. view: 사용자에게 비춰지는 화면, 화면에서 다시 action을 호출하게 된다.

 

+ MVC 패턴의 문제점

뷰와 모델이 양방향 통신이 가능하므로 하나의 뷰가 모듈을 변경했을 때, 다시 그 모듈이 연관된 뷰들을 갱신하고, 업데이트 된 뷰들이

연관된 모델을 다시 갱신하고, 엮이고 엮이는 관계를 추적 하기가 힘들다

페이스북 채팅화면에서 읽지 않은 메시지가 카운터가 있음에도 메시지 내용이 안나오는 버그에 대해 처리하기 어려워 고안되었다

카카오톡도 이런 버그가 있다 (필자 경험 - 2020.08.20)

분명 읽지않음 이라고 +1 표시가 있어 확인해서 들어가보면 읽지 않은 메시지 내용은 존재하지 않는다.

채팅방을 빠져나와도 읽지 않음이 사라지지 않는다

 

이러한 Flux 는 프론트엔드 뿐만 아니라 백엔드쪽도 있다 (Spring Flux)

실시간적으로 통신하기 위해서는 Flux 패턴을 이용하는 것이 적절하다

 

MVC 패턴

 

Flux 패턴

 

#2. vuex install
vue add vuex

vue cli install 설치 후 vuex 를 추가

 

터미널창

 

[생성] vuex 추가된 모습

 

[사용] main js 에 추가된 모습

 

#3. vuex 사용하기

 

# 참고
 

[Vue.js] Vuex란? Vuex의 컨셉과 구조

Vuex Intro 상태 관리 라이브러리 Intro 복잡한 애플리케이션의 컴포넌트들을 효율적으로 관리하는 Vuex 라이브러리 소개 Vuex 라이브러리의 등장 배경인 Flux 패턴(React) 소개 Vuex 라이브러리의 주요 속

ict-nroo.tistory.com

 

 

Vuex 시작하기 1 - Vuex와 State

Vue 중급으로 레벨업 하기. 상태 관리란 무엇인가? Vuex를 이용한 상태 관리. state 소개

joshua1988.github.io

 

 

API 레퍼런스 | Vuex

API 레퍼런스 Vuex.Store Vuex.Store 생성자 옵션 state 자료형: Object | Function Vuex 저장소의 루트 상태 객체 입니다. 상세 오브젝트를 반환하는 함수를 전달하면, 반환된 오브젝트가 루트 상태로 사용됩니

vuex.vuejs.org

 

저작자표시 (새창열림)

'16. Vue JS > Vue 3' 카테고리의 다른 글

04. Vue CLI 3 - Component 메모  (0) 2020.09.10
00. 인텔리제이 (Intellij IDEA) - Vue JS 플러그인  (0) 2020.09.10
03. Vue 2 - Vue Router  (0) 2020.09.10
01. Vue CLI 3 - 기본  (0) 2020.09.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 04. Vue CLI 3 - Component 메모

    04. Vue CLI 3 - Component 메모

    2020.09.10
  • 00. 인텔리제이 (Intellij IDEA) - Vue JS 플러그인

    00. 인텔리제이 (Intellij IDEA) - Vue JS 플러그인

    2020.09.10
  • 03. Vue 2 - Vue Router

    03. Vue 2 - Vue Router

    2020.09.10
  • 01. Vue CLI 3 - 기본

    01. Vue CLI 3 - 기본

    2020.09.10
다른 글 더 둘러보기

정보

나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

  • 나눔코딩의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (316)
    • ∞. 읽은 거리 (3)
    • ∞. 기술 면접 (61)
      • 1. 자료구조 (0)
      • 2. 네트워크 (9)
      • 3. 운영체제 (11)
      • 4. 데이터베이스 (13)
      • 5. 디자인 패턴 (0)
      • 6. 알고리즘 (0)
      • 7. 자바 (15)
      • 8. 자바스크립트 (7)
      • 9. 스프링 (5)
      • 10. 시큐리티 (1)
      • 11. 기타 (0)
      • 12. Vue (0)
    • ∞. 웹개발 유용한 사이트 (14)
    • ∞. 트러블 슈팅 + TIL (7)
    • 00. 출발 (9)
    • 01. 엑셀 (9)
      • 기초 (4)
      • 컴활 1급 (4)
      • VBA (0)
    • 02. 엑세스 (9)
      • 기초 (5)
      • 컴활 1급 (4)
    • 04. Oracle (1)
      • 기초 (1)
    • 03. JAVA (8)
      • 기초 (7)
      • 객체지향 프로그래밍 (0)
    • 05. HTML (13)
      • 기초 (1)
      • css (10)
      • sass (0)
      • less (0)
    • 06. Javascript (16)
      • 기초 (13)
      • ES6 모듈 (2)
      • Canvas (0)
    • 07. JSP (0)
      • 기초 (0)
    • 08. jQuery (0)
      • 기초 (0)
    • 09. BootStrap (1)
      • 기초 (0)
      • v4 - Layout (1)
    • 10. Spring (30)
      • 기초 (3)
      • 실험 (4)
      • MVC (1)
      • BOOT (6)
      • Security (10)
      • Lib (Library) (2)
      • 벤치마킹 (0)
      • JUnit5 (2)
      • DevTools (0)
      • Socket (1)
      • Batch (0)
      • Mobile (0)
      • WebFlux (0)
      • Cloud (0)
      • Thymleaf (0)
      • Actuator (0)
      • 성능 테스트 (1)
    • 11. JetBrains (34)
      • 기초 (1)
      • IntelliJ IDEA (33)
      • WebStorm (0)
      • Pycham (0)
    • 12. API (0)
      • 기초 (0)
      • 네이버 API (0)
      • 카카오 API (0)
      • 구글 API (0)
      • 인스타그램 API (0)
    • 13. AutoHotkey (1)
    • 14. Python (8)
      • 기초 (3)
      • Selenium (2)
      • Beautiful Soup (0)
      • openpyxl (1)
      • Pyqt5 (0)
      • Deep learning (open CV) (0)
      • Geocoder (0)
      • Anaconda (0)
      • DeepLearning (0)
      • Jupyter Nootbook (0)
    • 14.5. R (0)
    • 15. JMeter (0)
      • 다운로드 (0)
    • 16. Vue JS (23)
      • 기초 (3)
      • Vue 2 (15)
      • Vue 3 (5)
      • Vuetify 2.5.8 (0)
    • 17. Git (12)
      • 기초 (8)
      • ItelliJ IDEA (4)
      • SourceTree (0)
    • 18. AWS (5)
      • 기초 (2)
      • Jira (3)
    • 19. Naver Cloud Platform (0)
    • 20. Google Cloud Platform (0)
      • 기초 (0)
      • stt & tts (0)
    • 21. Kotlin (0)
    • 22. Android (0)
      • 기초 (0)
      • Java (0)
      • Kotlin (0)
      • Flutter FrameWork (0)
    • 23. Clean Code [JAVA] (1)
    • 24. BuildTool (1)
      • Maven (1)
      • Gradle (0)
    • 25. 자료 구조와 알고리즘 (18)
      • JAVA (1)
      • Java Script (1)
      • 프로그래머스 (0)
      • 백준 알고리즘 (0)
      • 나의 알고리즘 (14)
      • Brilliant 공부 (0)
    • 26. React (1)
      • 기초 (0)
      • 강의 정리 (1)
    • 27. PostMan (0)
      • 기초 (0)
    • 28. 프로그래머스 (9)
    • 29. Leet Code (0)
    • 30. MySQL (3)
      • 기초 (2)
      • 문제 (1)
    • 73. GraphQL (0)
    • 74. Nuxt JS (0)
    • 75. Electron (0)
    • 76. UX &amp; UI Design Tool (0)
      • 기초 (0)
      • Axure (0)
      • Sketch (0)
      • Figma (0)
    • 77. MarkDown (1)
      • 기초 (1)
    • 78. Tomcat (1)
      • 메모 (1)
    • 79. Element JS (0)
    • 80. Parallax JS (0)
      • 기초 (0)
    • 81. Player JS (0)
      • 기초 (0)
    • 82. Smart Maker (0)
    • 83. Vim (0)
      • 기초 (0)
    • 84. Linux (0)
      • 기초 (0)
      • Centos 7 (0)
      • Ubuntu (0)
    • 85. Node JS (2)
      • 기초 (1)
      • WebRTC (0)
      • NVM (1)
    • 86. Propeller JS (0)
    • 87. FullPage JS (0)
      • 기초 (0)
    • 88. 아두이노 (0)
    • 89. Tensorflow (0)
    • 90. 웹 패킷 분석 (0)
    • 91. 크롬 개발자도구 (0)
    • 92. 디자인 패턴 (7)
      • 생성(Creational) (3)
      • 구조(Structral) (1)
      • 행위(Behavioral) (2)
      • SOLID 패턴 (0)
    • 95. Linux Shell Script (0)
    • 96. 구글 애널리스틱 (0)
    • 97. ffmpeg (0)
    • 98. ShareX (1)
    • 자료실 (0)
    • 기타 (2)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 엑셀 기본작업
  • 엑셀 표시형식
  • 엑셀 기타작업
  • 엑셀 글씨
  • 엑셀 가운데맞춤
  • 깁
  • 엑셀 분석작업
  • 졵

나의 외부 링크

  • 비전공자 개발자
  • 자바 디자인 패턴
  • 자바 디자인 패턴
  • 스프링 블로그
  • 해킹보안 & 웹 관련
  • ERD 생성
  • 전문 기술 블로그
  • Servlet에 대한 개념없이 스프링을 했네요?
  • 스프링 FitlerChainList
  • 알고리즘 파워 블로그

정보

THE HEYDAZE의 나눔코딩

나눔코딩

THE HEYDAZE

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © THE HEYDAZE. Designed by Fraccino.

티스토리툴바