반응형

인스턴스란?

  • Vue로 화면을 개발하기 위해 필수적으로 생성해야하는 기본 단위

인스턴스 생성

  • <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>를 써줌으로서 Vue를 사용할 수 있음
<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
    <div id="test">
        <div>{{data01}}</div>
        <div>{{data02}}</div>
    </div>
    <div>{{data03}}</div>
</body>
<script>
    new Vue({
        el: "#test",
        data: {
            data01: '1번째 데이터',
            data02: '2번째 데이터',
            data03: '3번째 데이터',
        },
    });
</script>
</html>
  • new Vue({ }); 를 통해 Vue 인스턴스 생성
  • 인스턴스에는 el, data, methods 등의 속성들을 넣을 수 있음.

el 속성

  • 위 코드에서 첫번째 div의 id를 test로 정해주었고, el 속성에 #test를 넣어줌
  • 이를 통해 첫번째 div 안에서는 생성된 Vue 인스턴스를 사용할 수 있지만, 첫번째 div 밖에서는 사용할 수 없음
  • 따라서 {{data03}}은 첫번째 div 밖에 있으므로 data를 불러오지 못하고, 실행시키면 아래 그림과 같이 출력됨

data 속성

  • data 속성 안에 data01, data02, data03을 선언해 줬는데, 이것들은 변수라고 생각하면 될 듯
  • 따로 자료형을 지정해줄 필요는 없음
  • 그리고 이 변수들을 html 코드에서 사용하고 싶으면 중괄호 두개를 쓰고 안에 변수명을 적어주면 됨

methods 속성

<body>
    <div id="test">
        <div>{{num}}</div>
        <button v-on:click="BtnClick">숫자 증가</button>
    </div>
</body>
<script>
    new Vue({
        el: "#test",
        data: {
            num: 1,
        },
        methods: {
            BtnClick(){
                this.num ++;
            },
        },
    });
</script>
  • 다음과 같이 body태그와 script태그의 코드를 수정
  • methods 속성 안에 BtnClick() 메소드를 선언해 줌
  • html에서 button이 클릭되면 BtnClick() 메소드를 호출하고, BtnClick() 메소드 안에서는 data의 num을 1 증가시켜 줌 (여기서 this는 data를 가리키게 됨)
  • 결과적으로 data 속성은 변수, methods 속성은 메소드를 선언하는 부분이라고 생각하면 될 듯

결과

  • 처음 출력 결과

  • 버튼 누른 후 결과

반응형

↓ 클릭시 이동

복사했습니다!