본문 바로가기
SPA/Vue

ES6 for Vue.js - Modules

by memeseo 2021. 4. 30.

Modules : 자바스크립트 모듈화 방법

-자바스크립트 모듈 로더 라이브러리 (AMD, Commons JS)기능을 js 언어 자체에서 지원

-호출되기 전까지는 코드 실행과 동작을 하지 않는 특징이 있음

* Vuex : 상태 관리 라이브러리

개요

-복잡한 애플리케이션의 컴포넌트들을 효율적으로 관리하는 Vuex라이브러리 소개

-Vuex 라이브러리의 등장 배경인 Flux패턴 소개

-Vuex 라이브러리의 주요 속성인 state, gatters, mutations, actions 학습

-Vuex를 더 쉽게 코딩할 수 있는 방법인 Helper기능 소개

-Vuex로 프로젝트를 구조화하는 방법과 모듈 구조화 방법 소개

목차

-Vuex 라이브러리 소개

-Flux 패턴 소개

-Vuex 컨셉과 구조

-Vuex 설치 및 시작하기

-Vuex 기술 요소 (state, getter, mutations, actions)

-Vuex Helpers

-Vuex로 프로젝트 구조화 및 모듈화 하는 방법

- Vuex란?

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

2. React의 Flux패턴에서 기인함

3. Vue.js 중고급 개발자로 성장하기 위한 필수 관문

-Flux란?

: MVC패턴의 복잡한 데이터 흐름 문제를 해결하는 개발 패턴

[Undirectional data flow] 모든 데이터의 방향이 한방향, 단방향으로 흐름

Action -> Dispatcher -> Model -> View

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

2. dispatcher : 데이터를 변경하는 방법, 메서드 / 모델을 바꾸기 위한 역할

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

4. view : 사용자에게 비춰지는 화면

페이스북 예시)

채팅창, 상태 관리바, 메인화면의 여러가지 뷰 존재

한개의 뷰가 바뀌었을 때 다른 뷰에서 데이터를 추적하기 어려움

전체적인 앱의 흐름을 추적하기 어려움

MVC패턴의 한계점이라고 볼 수 있음 그래서 flux를 만듬


 

-MVC패턴의 문제점 

1. 기능 추가 및 변경에 따라 생기는 문제점을 예측할 수 없음

2. 앱이 복잡해지면서 생기는 업데이트 루프

-Flux 패턴의 단방향 데이터 흐름

1. 데이터의 흐름이 여러 갈래로 나뉘지 않고 단방향으로만 처리


- Vuex가 왜 필요할까?

1. 복잡한 애플리케이션에서 컴포넌트의 개수가 많아지면 컴포넌트 간에 데이터 전달이 어려워진다

-이벤트 버스로 해결?

: 어디서 이벤트를 보냈는지 혹은 어디서 이벤트를 받았는지 알기 어려움

예시)

// Login.vue

eventBus.$emit('fetch', loginInfo);

// List.vue

eventBus.$on('display', data => this.displayOnScreen(data));

//chart.vue

eventBus..$emit('refreshData', chartData);

=> 컴포넌트 간 데이터 전달이 명시적이지 않음


 

-Vuex로 해결할 수 있는 문제

1. MVC패턴에서 발생하는 구조적 오류

2. 컴포넌트 간 데이터 전달 명시

3. 여러 개의 컴포넌트에서 같은 데이터를 업데이트 할 때 동기화 문제

-Vuex 컨셉

1. state : 컴포넌트 간에 공유하는 데이터 data()

데이터는 여러 컴포넌트에서 사용하는 proportie

2. View : 데이터를 표시하는 화면 template

3. Action : 사용자의 입력에 따라 데이터를 변경하는 methods

-Vuex 구조

컴포넌트 -> 비동기 로직 -> 동기 로직 -> 상태

비동기 & 동기?

[참고]

https://joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/#%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC-%EA%B7%B8%EA%B2%8C-%EB%AD%94%EA%B0%80%EC%9A%94

'SPA > Vue' 카테고리의 다른 글

Vuex - 헬퍼 함수  (0) 2021.05.03
Vuex- 주요 기술 요소  (0) 2021.05.03
ES6 for Vue.js - Enhanced Object Literals (향상된 객체 리터럴)  (0) 2021.04.30
ES6 for Vue.js - 화살표 함수  (0) 2021.04.30
ES6 for Vue.js - const & let  (0) 2021.04.29