const - 한번 선언한값에 대해서 변경할 수 없음(상수개념)
(const는 값이 다시 할당이안됨)
let- 한번 선언한 값에 대해서 다시 선언할 수 없음
(let은 값이 다시 선언이안됨)
var sum =5;
sum = sum + i;
function sumAllNumbers() {
}
var i = 10;
->
//#1 - 함수 선언식과 변수 선언을 hoisting
var sum;
function sumAllNumbers() {
//...
}
var i;
// #2 - 변수 대입 및 할당
sum = 5;
sum = sum + i;
i = 10;
function 이라는 키워드를 사용하지않고 =>로 대체
var sum = function(a,b) {
return a+b
};
->
var sum = (a, b) => {
return a+b;
}
//libs/math.js
export function sum(x,y) {
return x + y;
}
export var pi = 3.141593;
//main.js
import {sum} from 'libs/math.js';
sum(1, 2);
action -> dispatcher -> model -> view
1. action: 화면에서 발생하는 이벤트 또는 사용자의 입력
2. dispatcher: 데이터를 변경하는 방법, 메서드
3. model: 화면에 표시할 데이터
4. view: 사용자에게 비춰지는 화면
(Vuex로 해결 할 수 있는 문제)
Vuex컨셉
-State: 컴포넌트 간에 공유하는 데이터 data()
(상태)
-View: 데이터를 표시하는 화면 template
(templete속성)
-Action: 사용자의 입력에 따라 데이터를 변경하는 methods
(특정 데이터를 변경하거나 이벤트 로직을 발생 시키는 메소드)
-actions: 비동기 처리 로직을 선언하는 메서드 async methods
: 컴포넌트 -> 비동기 로직 -> 동기 로직 -> 상태
-state의 값을 변경할 수 있는 유일한 방법이자 메서트
-뮤테이션은 commit()으로 동작시킨다
-state를 변경하기 위해 mutations를 동작시킬때 인자(payload)를 전달 할 수 있음
state는 왜 직접 변경하지 않고 mutations로 변경할까?
method: {
increaseCounter() {this.$store.state.counter++;}
}
-특정 시점에 어떤 컴포넌트가 state를 접근하여 변경한 건지 확인하기가 어렵기 때문
-따라서, 뷰의 반응성을 거스르지않게 명시적으로 상태 변화를 수행. 반응성, 디버깅, 테스팅 혜택
-비동기 처리 로직을 선언하는 메서드. 비동기 로직을 담당하는 mutations
-데이터요청, Promise, ES6 async와 같은 비동기 처리는 모두 actions에 선언
(context는 actions에서 뮤테이션을 접근할 수 있는 경로. mutation에게 신호를 주는 역할이라 보면 됨.)
-언제 어느 컴포넌트에서 해당 state를 호출하고, 변경했는지 확인 하기가 어려움
: state값의 변화를 추적하기 어렵기 때문에 mutations 속성에는 동기 처리 로직만 넣어야 한다.