-
[Vue.js] 인스턴스 (Instance), 라이프사이클(LifeCycle)Front-End(Web)/Vue 2021. 5. 26. 02:09반응형
React는 파일(혹은 모듈) 자체를 클래스형, 함수형의 컴포넌트로 제작하는 방식이었다.
이와는 달리, Vue는 컴포넌트를 포함한 다양한 정보가 담긴 인스턴스(new Vue)에 정보를 담는 것으로 보인다.
이에 해당하는 Vue 인스턴스에 대해 학습 및 포스팅할 예정이다.
* 이 글은 캡틴판교님의 Vue.js 강의 및 블로그를 기반으로 학습한 내용을 정리하고 있습니다.
💚 Vue 인스턴스
인스턴스는 뷰로 개발할 떄 필수로 생성해야 하는 코드라고 소개된다. Vue.js로 화면을 구성하기 위해 꼭 생성해야 하는 필수 단위인 것이다.
new Vue() // 변수할당 var vm = new Vue({ // options... });
Vue 앱은 Root Vue 인스턴스를 기점으로, 선택적으로 중첩이 가능하고 재사용 가능한 컴포넌트 트리로 확장된다.
Root Instance └─ TodoList ├─ TodoItem │ ├─ DeleteTodoButton │ └─ EditTodoButton └─ TodoListFooter ├─ ClearTodosButton └─ TodoListStatistics
- 인스턴스 옵션(속성, API)
Vue 객체를 생성할 때, 아래와 같이 el, data, template, methods 등 인스턴스 옵션 객체를 포함할 수 있다. (전체옵션 링크)
new Vue({ el: , template: , data: , methods: , created: , watch: , });
- el : Vue 인스턴스와 연결할 HTML 엘리먼트를 선택. 이렇게 연결하게 되면, 이후 해당 엘리먼트 내에서 Vue 조작이 유효해짐
- template : 화면에 표시할 요소(HTML, CSS 등)
- data : Vue 인스턴스에 전달되는 정보 혹은 특정 값. 반응성(Reactivity)가 반영된 속성 (React의 state 개념과 유사한 것 같다)
- props : 부모 컴포넌트의 데이터를 받을 수 있게 노출된 속성의 리스트(해시)
- methods : 화면의 동작과 이벤트 로직을 제어하는 메서드
- watch : data에 정의한 속성이 변화했을 때, 추가 동작을 수행하게끔 정의하는 속성
- computed : Vue 인스턴스에 추가되는 계산된 속성. 모든 getter, setter는 자동으로 this 컨텍스트를 바인딩
- created(LifeCycle Methods) : Vue 라이프 사이클과 관련된 속성
* data 옵션은 인스턴스 생성시 존재한 값들만 반응형에 해당된다. 그렇기에, 인스턴스를 할당할 때 data 초기화가 반드시 병행된다.
// 데이터 객체 var data = { a: 1 } // Vue인스턴스에 데이터 객체를 추가합니다. var vm = new Vue({ data: data }) // 인스턴스에 있는 속성은 // 원본 데이터에 있는 값을 반환합니다. vm.a === data.a // => true // 인스턴스에 있는 속성값을 변경하면 // 원본 데이터에도 영향을 미칩니다. vm.a = 2 data.a // => 2 // ... 반대로 마찬가지입니다. data.a = 3 vm.a // => 3 // !새로운 속성을 추가/변경하여도 반응형에 해당하지 않음! vm.b = 'hi'
💚 Vue 라이프사이클
Vue 인스턴스는 생성될 때 일련의 초기화 단계를 거친다. (데이터 관찰(watch), 템플릿 컴파일, 인스턴스 DOM 마운트 및 업데이트)
위의 경우 안에서 각 시점에서 특정 로직을 실행할 수 있는 LifeCycle Hooks 역시 호출이 된다.
- beforeCreate, created : 인스턴스의 초기화 전, 후에 동기적으로 실행
- beforeMount, mounted : 컴포넌트가 el에 마운트되기 전, 후에 동기적으로 실행 (render 호출시점)
- beforeUpdate, updated : data 옵션이 변경되어 Virtual DOM 리렌더링과 패치가 이뤄지기 전, 후에 동기적으로 실행
- activated, deactivated : keep-alive 컴포넌트의 활성화, 비활성화 시 동기적으로 실행
- beforeDestroy, destroyed : 인스턴스가 제거된 전, 후에 동기적으로 실행
- errorCaptured : 자손 컴포넌트로부터 에러가 캡쳐되었을 때 호출됨
* options 속성이나 콜백함수에 Arrow Function 사용을 지양한다.
이유는, Arrow Function은 this 속성을 가지지 않기 때문에, this가 다른 변수로 인지되거나 렉시컬하게 취급될 수 있기 때문이다.
벌써, Vue의 2번째 포스팅이다. 인스턴스의 분량 자체가 많진 않지만, 다른 부분과 엮기도 애매하고 중요한 개념이라 별도로 정리한다.
다음에는, Vue의 Component에 대해 알아보는 포스팅들을 영상학습과 병행하여 작성하겠다. (템플릿, 바인딩 등 개념은 이후 작성할 듯)
[출처]
- Vue 공식문서 : https://kr.vuejs.org/v2/guide/instance.html
- 캡틴판교 님의 블로그 : https://joshua1988.github.io/web-development/vuejs/vuejs-tutorial-for-beginner/
반응형'Front-End(Web) > Vue' 카테고리의 다른 글
[Vue.js] Vuex - (1) Vuex 기본 (0) 2021.06.10 [Vue.js] Template 문법 (0) 2021.06.03 [Vue.js] Vue Router (0) 2021.06.02 [Vue.js] 컴포넌트(Component), Props & Event (0) 2021.05.26 [Vue.js] Vue 개요 및 세팅(CLI) (0) 2021.05.10