[Vue] Vue 인스턴스

2021. 4. 14. 16:04·Language/JavaScript
반응형
02 57e7a793ef2446aa818778dba8a4d776

Vue 인스턴스는 Vue.js를 시작할 때 사용하는 객체를 의미하며 어플리케이션의 시작점이라고 할 수 있다.

Vue 어플리케이션은 Vue함수로 인스턴스를 생성하는 것부터 시작한다.

var vm = new Vue({
    // options
});
​
//또는
new Vue({
    // options
});

옵션에는 아래와 같은 속성들이 전달된다.

  • el, template, data, props, computed, methods, watch

위 속성들은 컴포넌트와 다르지 않다.

여기서는 el 프로퍼티를 볼 수 있는데 이는 HTML 문서에 마운트될 HTML 엘리먼트를 지정하는 역할을 한다.

//html
<body>
  <div id="app"></div>
</body>
// script
new Vue({
    el: "app"
});

vue/cli로 Vue 프로젝트를 생성 후 index.html을 보면 body태그는 body>div 형태로 구성되어 있다. 여기 id를 app으로 지정한 div 엘리먼트에 뷰 인스턴스가 마운트된다.

Vue 인스턴스의 라이프사이클은 아래와 같다

01

  • Vue 인스턴스가 new 키워드를 통해 초기화된다.

  • 초기화 완료 후 beforeCreate 훅이 발생

    • 아직 데이터와 이벤트가 생성되지 아ㅣㄶ아 접근할 수 없다.
  • data, event, computed, methods같은 옵션들이 설정

  • 위 과정 완료 후 created 훅

  • 템플릿이나 el 프로퍼티로 참조된 템플릿을 컴파일 하고 Virtual DOM을 업데이트한다.

  • 첫 렌더링이 일어나기 직전 beforeMount 훅

  • 렌더링된 HTML 태그로 $el 프로퍼티를 생성하고 이 HTML 태그를 실제 DOM에 삽입한다. 즉 virtual DOM이 렌더링되고 그 결과가 실제 DOM에 적용되는 것이다.

  • 마운트가 완료되면 mounted 훅

  • 마운트된 이후 뷰 인스턴스에 정의된 데이터들에 변화가 생기면 DOM에 변경사항이 반영된다.

    • 변경사항 반영 전 beforeUpdate 훅
    • DOM에 변경사항 반영
    • 변경 후 updated 훅
  • $destroy()가 호출되면 인스턴스가 종료된다.

  • 제일 먼저 beforeDestroy 훅

  • 모든 디렉티브 바인딩이 해제되고 이벤트 리스너가 제거되며 하위 Vue 인스턴스도 제거된다.

  • Vue 인스턴스가 destroyed 상태가 되고 destroyed 훅 발생

반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/JavaScript' 카테고리의 다른 글
  • [Typescript] hasText
  • [Typescript] User Defined Type Guards
  • [Vue] 플러그인 만들기
  • [JS] Phaser
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (124)
      • Spring Framework (10)
        • Spring (5)
        • JPA (3)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    알고리즘
    CPP
    블루프린트
    게임 개발
    Unreal
    mscoco
    웹
    C++
    자바
    프로그래머스
    select
    언리얼엔진4
    Unreal Engine
    C
    딥러닝
    MySQL
    memcached
    redis
    FPS
    JavaScript
    JS
    php
    map
    NUXT
    PS
    클래스
    pytorch
    게임
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[Vue] Vue 인스턴스
상단으로

티스토리툴바