Develope/WEB

2-1 Vue 인스턴스

고로이 2020. 10. 8. 15:16
반응형

뷰의 인스턴스는 레고를 조립하는 기본 판,

컴포넌트는 레고 블록이라고 할 수 있다.

 

인스턴스는 뷰로 화면을 개발하기 위해 필수적으로 생성해야 하는 기본 단위이다. 뷰 인스턴스의 기본 형식은

new Vue({..})

로서 흔히 자바에서 클래스를 선언 할 때와 흡사하다. 이 때 Vue 를 생성자라고 하는데, 뷰 라이브러리를 로딩하고 나면 접근할 수 있다. 생성자를 이용해서 뷰로 개발 할 때 필요한 기능들을 생성자에 미리 정의해 개발자가 이를 편리하게 사용할 수 있다.

 

[소스코드 출처 : DoIt Vue.js]

 

위의 코드는 뷰 인스턴스를 생성하고, el 속성을 통해 해당 뷰 인스턴스를 #app에 바인딩하였다. 나아가 data 속성에 message 값 ‘Hello Vue.js!’ 를 입력하면서, 위의 {{ message }} 값을 정의하였다.

 

 

2. 뷰 인스턴스의 옵션 속성 

뷰 인스턴스의 옵션 속성이란 data, el, template 등의 속성을 의미한다. Vue 인스턴스가 생성될 때 data 객체에 있는 모든 속성이 Vue의 반응형 시스템에 추가된다. 각 속성값이 변경될 때 뷰가 “반응”하여 새로운 값과 일치하도록 업데이트된다.

el : ‘#app’은 DOM에서 id가 app인 것을 의미한다. 선택자는 기존의 css를 따른다. 

이 외에도 기본적으로 template, method, created 등 미리 정의되어 있는 속성을 사용 할 수 있다.

  • template : HTML, CSS등 마크업 요소를 정의

  • method : 화면 로직 제어와 관계된 함수를 정의하는 속성. (ex) 마우스 클릭 이벤트)

  • create : 인스턴스가 생성됨과 동시에 실행 할 로직을 정의하는 속성. 라이프사이클

 

Vue 라이브러리 로딩 -> 인스턴스 객체 생성(옵션 포함) -> 특정 화면 요소에 인스턴스 주입 -> 인스턴스의 내용이 화면 요소로 변환 -> 사용자가 확인

 

뷰인스턴스는 new Vue를 통해 인스턴스가 생성되고, html 특정 화면 요소에 주입(el로 정의) 된 부분이 인스턴스의 유효 범위이다.그렇기 때문에 위의 소스에서 div를 벗어나 {{message}}를 선언한다면 데이터가 제대로 바인딩 되지 않는다.

 

 

3. Vue 인스턴스의 라이프사이클

뷰의 라이프사이클은 beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDestroy, destroyed로 총 8가지가 있다. 여기서 크게 생성:create, 부착:mount, 갱신:update, 소멸destroy로 구분 할 수 있다.

  • beforeCreate : 인스턴스가 생성되고 가장 먼저 실행되는 라이프사이클로, data와 methods속성이 아직 정의되지 않고, DOM에도 접근할 수 없다.

  • created : data와 methods속성이 아직 정의되어 로직들을 이용하여 접근 할 수 있다. 아직 인스턴스가 화면에 바인딩되지 않았기 때문에 template 속성에 정의된 돔 요소로는 접근할 수 없다.

  • beforeMount : render() 함수가 실행되지 전 단계

  • mounted : 지정한 화면 요소에 인스턴스가 부착되고 난 후에 호출되는 단계. 화면 요소를 제어하는 로직을 수행한다.

  • beforeUpdate : 인스턴스에 정의된 속성들이 화면에 치환되는데, 변경을 감지($watch)하여 변하기 전 호출된다. 변경 예정 데이터의 값과 관련된 로직을 넣을 수 있다.

  • updated : 데이터가 변경되고 나서 가상 돔으로 다시 화면을 그리고나면 실행되는 단계. 데이터 변경 후 화면 요소 제어와 관련된 로직을 추가할 수 있다. 무한루프에 빠질 수 있기 때문에 compute와 watch속성을 이용

  • beforeDestroy : 뷰 인스턴스가 파괴되기 직전에 호출되는 단계. 인스턴스에 접근할 수 있고, 데이터를 삭제하기 좋은 단계

  • destroyed : 뷰 인스턴스가 파괴되고 나서 호출되는 단계.

 

 

**라이프사이클 예제

 

<html>

    <head>

        <title>Vue Instance Lifecycle</title>

    </head>

    <body>

        <div id="app">

            {{ message }}

        </div>

       

        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>

        <script>

            new Vue({

                el: '#app',

                data: {

                    message: 'Hello Vue.js!'

                },

                beforeCreate: function() {

                    console.log("beforeCreate");

                },

                created: function() {

                    console.log("created");

                },

                mounted: function() {

                    console.log("mounted");

                    this.message = 'Hello Vue!';

                },

                updated: function() {

                    console.log("updated");

                }

            });

        </script>

    </body>

</html>

 

반응형

'Develope > WEB' 카테고리의 다른 글

2-2 Vue 컴포넌트  (0) 2020.11.03
Vue 프로젝트 구성 (intelliJ)  (0) 2020.10.03
VueJS의 핵심 기능  (0) 2020.10.02
JS 프레임워크 비교하기  (0) 2020.09.14
[FullCalendar] 기능정리  (0) 2019.07.18